_access、_waccess
ファイルが読み取り専用かはないかどうかを判定します。セキュリティが強化されたバージョンを使用できるようになりました。「_access_s、_waccess_s」を参照してください。
int _access(
const char *path,
int mode
);
int _waccess(
const wchar_t *path,
int mode
);
パラメーター
path
ファイルまたはディレクトリ パス。mode
読み書き可能な属性。
戻り値
ファイルに指定されたモードがの場合0 が返されます。関数の戻り値 (ファイル名はなく特定のモードである 1; この場合errno は次の表に示すように設定されます。
EACCES
拒否 : ファイルのアクセス許可の設定は指定されたアクセスできません。ENOENT
見つかったファイル名またはパス。EINVAL
無効なパラメーター。
リターン コードの詳細については、「_doserrno、errno、_sys_errlist、および _sys_nerr」を参照してください。
解説
ファイルで使用する場合は**_access** の関数は指定されたファイルまたはディレクトリが存在しmode の値で指定された属性かどうかがあります。ディレクトリを使用すると**_access** は指定したディレクトリが存在するかどうかを決定します ; Windows 2000 以降のオペレーティング システムではすべてのディレクトリが読み取りおよび書き込みアクセス。
mode の値 |
ファイルのチェック |
---|---|
00 |
プロシージャのみ |
02 |
書き込み専用 |
04 |
読み取り専用 |
06 |
読み取りと書き込みを行います。 |
この関数はファイルとディレクトリが読み取り専用かどうかをチェックしませんがファイル システムのセキュリティ設定をチェックします。それぞれのアクセス トークンが必要です。ファイル システムのセキュリティの詳細についてはアクセス トークン を参照してください。ATL クラスはこの機能を提供するために; CAccessToken クラス を参照してください。
_waccess 関数は、_access 関数のワイド文字バージョンです。_waccess 関数の引数 path は、ワイド文字列です。それ以外では、_waccess と _access の動作は同じです。
この関数は、パラメーターを検証します。path が NULL の場合またはが有効 mode モードを指定しない場合無効なパラメーター ハンドラーが パラメーターの検証 に説明されているように開始されます。実行の継続が許可された場合関数 EINVAL 番目のセット errno -1。
汎用テキスト ルーチンのマップ
Tchar.h のルーチン |
_UNICODE および _MBCS が未定義の場合 |
_MBCS が定義されている場合 |
_UNICODE が定義されている場合 |
---|---|---|---|
_taccess |
_access |
_access |
_waccess |
必要条件
ルーチン |
必須ヘッダー |
省略可能なヘッダー |
---|---|---|
_access |
<io.h> |
<errno.h> |
_waccess |
<wchar.h> または <io.h> |
<errno.h> |
使用例
次の例ではという crt_ACCESS.C あるかどうかおよび書き込みを許可するかどうかを確認するにはファイル _access を使用します。
// crt_access.c
// compile with: /W1
// This example uses _access to check the file named
// crt_ACCESS.C to see if it exists and if writing is allowed.
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
// Check for existence.
if( (_access( "crt_ACCESS.C", 0 )) != -1 )
{
printf_s( "File crt_ACCESS.C exists.\n" );
// Check for write permission.
// Assume file is read-only.
if( (_access( "crt_ACCESS.C", 2 )) == -1 )
printf_s( "File crt_ACCESS.C does not have write permission.\n" );
}
}