2
我對以下情況感到困惑。 我的應用程序試圖找到一個指定的目錄:無法訪問由CreateDirectory創建的目錄
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,即使應用程序重新啓動。
我的錯誤在哪裏?
UPDATE
只是試圖manualy創建目標文件夾 - 同樣的問題。
CreateFile(_ddn , GENERIC_READ , FILE_SHARE_READ | FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_DIRECTORY , NULL);
此調用始終調用ERROR_ACCESS_DENIED
錯誤消息(0x5錯誤代碼)。
這是不真實的!我讀過[此頁](http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v = vs.85).aspx)十幾次,但沒有看到關於FILE_FLAG_BACKUP_SEMANTICS 。而且,我的應用程序所做的所有工作都是數據備份謝謝你,兄弟! –
這完全解決了我的問題 –
FILE_ATTRIBUTE_DIRECTORY通常與FindFirstFile/FindNextFile/FindClose三元組一起使用。 – kol