_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

読み取りと書き込み

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

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

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

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

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" );
    }
}
      

同等の .NET Framework 関数

System.IO.FileAccess

参照

参照

ファイル処理

_chmod、_wchmod

_fstat、_fstat32、_fstat64、_fstati64、_fstat32i64、_fstat64i32

_open、_wopen

_stat、_wstat 関数