我对以下情况感到困惑。我的应用程序尝试查找指定目录:
HANDLE _dh, _fh; // Handles for a files
_dh = CreateFile(_ddn, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_DIRECTORY, NULL);
如果目录不存在应用程序创建它:
if( _dh == INVALID_HANDLE_VALUE ) {
if( GetLastError() == ERROR_FILE_NOT_FOUND){
CreateDirectory( _ddn , NULL ); }
else {
CStringW _err;
DWORD _ed = GetLastError();
_err.Format( L" ERROR# %u", _ed );
MessageBox ( NULL , _err , L"123" , MB_OK );
PostQuitMessage(0);
return FALSE;
}
}
CloseHandle(_dh);
这有效,但只是第一次。当目录已经存在CreateFile
失败并出现错误 #5: ACCESS DENIED 即使应用程序重新启动。
我的错误在哪里?
更新
刚刚尝试手动创建目标文件夹 - 同样的问题。
CreateFile( _ddn , GENERIC_READ , FILE_SHARE_READ | FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_DIRECTORY , NULL );
此调用始终调用ERROR_ACCESS_DENIED
错误消息(0x5 错误代码)。