_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 次の表に示すように設定されます。

Value 説明
EACCES アクセスが拒否されました: ファイルのアクセス許可設定で、指定されたアクセスが許可されていません。
ENOENT ファイル名またはパスが見つかりません。
EINVAL 無効なパラメーター。

これらのリターン コードとその他のリターン コードについては、「errno_doserrno_sys_errlist_sys_nerr」を参照してください。

解説

ファイルを使用すると、_access 関数は、指定したファイルまたはディレクトリが存在し、mode 値で指定されている属性があるかどうかを判断します。 ディレクトリを使用すると、_access は指定されたディレクトリが存在するかどうかだけを判断します。Windows 2000 以降のオペレーティング システムでは、すべてのディレクトリに読み取りおよび書き込みアクセスできます。

mode ファイル チェックの目的
00 存在のみ
02 書き込み専用
04 読み取り専用
06 読み取りと書き込み

この関数は、ファイルとディレクトリが読み取り専用かどうかにのみチェックし、ファイルシステムのセキュリティ設定をチェックしません。 そのためには、アクセス トークンが必要です。 ファイルシステムのセキュリティの詳細については、「アクセス トークン」を参照してください。 ATL クラスはこの機能を提供するために存在します。「CAccessToken クラス」を参照してください。

_waccess 関数は、 _access関数のワイド文字バージョンです。 path 関数の引数 _waccess は、ワイド文字列です。 それ以外では、_waccess_access の動作は同じです。

この関数は、パラメーターを検証します。 有効なモードがNULL指定されている場合、またはmode指定されていない場合pathは、「パラメーターの検証」で説明されているように、無効なパラメーター ハンドラーが呼び出されます。 実行の継続が許可された場合、この関数は errnoEINVAL に設定し、-1 を返します。

既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT のグローバル状態」を参照してください

汎用テキスト ルーチンのマップ

Tchar.h ルーチン _UNICODE_MBCS が定義されていない _MBCS が定義されている _UNICODE が定義されている
_taccess _access _access _waccess

必要条件

ルーチンによって返される値 必須ヘッダー 省略可能なヘッダー
_access <io.h> <errno.h>
_waccess <wchar.h> または <io.h> <errno.h>

次の例では、_access を使用して、crt_ACCESS.C という名前のファイルが存在し、書き込みが許可されているかどうかを確認します。

// 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" );
    }
}
File crt_ACCESS.C exists.
File crt_ACCESS.C does not have write permission.

関連項目

ファイル処理
_chmod, _wchmod
_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32
_open, _wopen
_stat_wstat 関数