gpt4 book ai didi

C++ MoveFile 为 Windows Server 上的目录移动提供不一致的 ERROR_ACCESS_DENIED

转载 作者:行者123 更新时间:2023-11-27 23:20:27 26 4
gpt4 key购买 nike

我在将目录移动到新位置时遇到问题,特别是我使用 CreateDirectory 创建的目录。这是代码:

if (FALSE == CreateDirectory(strDestination, NULL))
{
dwError = GetLastError();
if (ERROR_ALREADY_EXISTS != dwError)
{
strError.Format("Error creating %s: %i", strDestination, dwError);
LogIt(strError);
}
}
if (FALSE == MoveFile(strSource, strDestination + strID))
{
dwError = GetLastError();
strError.Format("Error moving %s to %s: %i", strSource, strDestination + strID, dwError);
LogIt(strError);
}

但是,如果我手动创建一个目录,我可以将该路径输入到这段代码中并且它可以工作。我已经比较了这两个目录的安全设置,并确保它们是相同的,但它仍然无法正常工作。我的创建代码有什么问题吗?如果我将第二个参数保留为 NULL,它是否应该授予与我手动创建目录时相同的权限?

最佳答案

如果您在计算机上运行防病毒软件,它可能会在验证新文件夹/将其添加到其干净缓存时锁定新文件夹。这可能会导致间歇性计时问题,例如,如果 AV 驱动程序因其他事件而停滞不前。

要检查这是否正在发生,您可以禁用 AV 的按访问扫描程序。您的代码中的解决方法是重试(比方说)2-3 次,中间稍有延迟。

编辑:由于 OP 已确认无法移动到不同的卷,因此答案是使用带有 MOVEFILE_COPY_ALLOWED 标志的 MoveFileEx()。

关于C++ MoveFile 为 Windows Server 上的目录移动提供不一致的 ERROR_ACCESS_DENIED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13352396/

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