gpt4 book ai didi

c++ - Windows:覆盖正在使用的文件

转载 作者:可可西里 更新时间:2023-11-01 12:41:31 24 4
gpt4 key购买 nike

我正在尝试编写一个允许在 Windows 中移动文件的实用程序,当它找到正在使用的文件时,将设置该文件以在重新启动时移动。

似乎 MoveFileEx ( http://msdn.microsoft.com/en-us/library/aa365240(VS.85).aspx ) 是对此的正确调用,但是我无法弄清楚我正在从 GetLastError ( http://msdn.microsoft.com/en-us/library/ms679360(VS.85).aspx ) 中寻找什么错误代码来查看该文件正在使用中。

我希望实用程序在存在实际权限问题时失败。无论如何,有没有办法区分你不能在那里写和正在使用的覆盖错误?

此外,如果我在用户的临时文件夹中有我要移动的文件,它们会在延迟重命名之前被删除吗?

最佳答案

你必须调用CreateFile首先查看文件是否正在使用中。

查看文件是否正在使用:

如果您得到一个有效的文件句柄,那么您就知道该文件与已经打开该文件的进程没有冲突的共享权限。

如果您指定无共享访问(0 到 CreateFile 调用的 dwShareMode 参数),那么如果任何其他进程当前正在以任何方式使用该文件,您将不会获得文件句柄。在这种情况下,GetLastError 将返回:ERROR_SHARING_VIOLATION (32)


查看访问文件是否存在安全问题:

要查看访问该文件是否存在权限问题,CreateFile 调用也会失败,但会出现不同的 GetLastError。您将得到:ERROR_ACCESS_DENIED (5)

关于c++ - Windows:覆盖正在使用的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/709914/

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