_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_s
的 path
引數是寬字元字串。 否則 _waccess_s
和 _access_s
的行為相同。
這些函式會驗證它們的參數。 如果 path
是 NULL
或 mode
未指定有效的模式,則會叫用無效的參數處理程式,如參數驗證中所述。 如果允許繼續執行,這些函式會將 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
函式