共用方式為


_access_s、 、 _waccess_s_taccess_s

決定檔案的讀取/寫入權限。 這些函式是 _access, _waccess 的版本,具有 CRT 中的安全性功能中所述的安全性增強功能。

如需 _taccess_s,請參閱 泛型文字函式對應。

語法

errno_t _access_s(
   const char *path,
   int mode
);
errno_t _waccess_s(
   const wchar_t *path,
   int mode
);

參數

path
檔案或目錄路徑。

mode
權限設定。

傳回值

如果檔案有指定模式,每個函式都會傳回 0。 如果具名檔案不存在或無法在指定模式中存取,函式會傳回錯誤碼。 在此情況下,函式會如下所示從集合傳回錯誤代碼,也會將 errno 設為相同的值。

errno Condition
EACCES 拒絕存取。 檔案的許可權設定不允許指定的存取。
ENOENT 找不到檔案名稱或路徑。
EINVAL 無效的 參數。

如需詳細資訊,請參閱errno, _doserrno, _sys_errlist_sys_nerr.

備註

搭配檔案使用時,_access_s 函式會判斷指定的檔案是否存在,以及可否如指定的由 mode 值所存取。 搭配目錄使用時,_access_s 只判斷指定的目錄是否存在。 在 Windows 2000 和更新版本的作業系統中,所有目錄都有讀取和寫入許可權。

mode 檢查檔案
00 只存在。
02 寫入權限。
04 讀取權限。
06 讀取和寫入權限。

讀取或寫入檔案的許可權不足以確保能夠開啟檔案。 例如,如果檔案已由另一個處理序鎖定,即使 _access_s 傳回 0,也可能無法存取。

_waccess_s 是寬字元版本的 _access_s,而 _waccess_spath 引數是寬字元字串。 否則 _waccess_s_access_s 的行為相同。

這些函式會驗證它們的參數。 如果 pathNULLmode 未指定有效的模式,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,這些函式會將 errno 設為 EINVAL,並傳回 EINVAL

根據預設,此函式的全域狀態會限定於應用程式。 若要變更此行為,請參閱 CRT 中的全域狀態

泛型文字函式對應

數據行中的 tchar.h 函式會根據編譯時期定義的字元集,對應至其他數據行中的函式。

tchar.h函式 _UNICODE_MBCS 未定義 _MBCS 已定義 _UNICODE 已定義
_taccess_s _access_s _access_s _waccess_s

需求

常式 必要的標頭 選擇性標頭
_access_s <io.h> <errno.h>
_waccess_s <wchar.h><io.h> <errno.h>

範例

本例會使用 _access_s 檢查名為 crt_access_s.c 的檔案,以查看它是否存在以及是否允許寫入。

// crt_access_s.c

#include <io.h>
#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    errno_t err = 0;

    // Check for existence.
    if ((err = _access_s( "crt_access_s.c", 0 )) == 0 )
    {
        printf_s( "File crt_access_s.c exists.\n" );

        // Check for write permission.
        if ((err = _access_s( "crt_access_s.c", 2 )) == 0 )
        {
            printf_s( "File crt_access_s.c does have "
                      "write permission.\n" );
        }
        else
        {
            printf_s( "File crt_access_s.c does not have "
                      "write permission.\n" );
        }
    }
    else
    {
        printf_s( "File crt_access_s.c does not exist.\n" );
    }
}
File crt_access_s.c exists.
File crt_access_s.c does not have write permission.

另請參閱

檔案處理
_access, _waccess
_chmod, _wchmod
_fstat、、_fstat32_fstat64_fstati64、、_fstat32i64_fstat64i32
_open, _wopen
_stat_wstat 函式