gpt4 book ai didi

c++ - 无法访问 CreateDirectory 创建的目录

转载 作者:搜寻专家 更新时间:2023-10-31 01:51:56 26 4
gpt4 key购买 nike

我对以下情况感到困惑。我的应用程序尝试查找指定目录:

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:即使应用重新启动,访问被拒绝。

我的错误在哪里?

更新

刚刚尝试手动创建目标文件夹 - 同样的问题。

CreateFile( _ddn , GENERIC_READ , FILE_SHARE_READ | FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_ATTRIBUTE_DIRECTORY , NULL );

此调用始终调用 ERROR_ACCESS_DENIED 错误消息(0x5 错误代码)。

最佳答案

来自 MSDN :

To open a directory using CreateFile, specify the FILE_FLAG_BACKUP_SEMANTICS flag as part of dwFlagsAndAttributes.

所以改为:

_dh = CreateFile( _ddn , GENERIC_READ , FILE_SHARE_READ | FILE_SHARE_WRITE , NULL , OPEN_EXISTING , FILE_FLAG_BACKUP_SEMANTICS , NULL );

相反。

不要使用 FILE_ATTRIBUTE_DIRECTORY,它甚至没有记录。

关于c++ - 无法访问 CreateDirectory 创建的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13370513/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com