Windows 7 上的 C++ MoveFile 错误(2)
Posted
技术标签:
【中文标题】Windows 7 上的 C++ MoveFile 错误(2)【英文标题】:C++ MoveFile error (2) on windows 7 【发布时间】:2012-04-10 01:03:36 【问题描述】:我有一个尝试移动文件的小应用程序。
这是最低代码:
#include <windows.h>
int main()
MoveFile("C:\\test.txt", "C:\\folder\\test.txt");
// Here I use GetLastError() to get last error code witch is 2 and I can't find what mean;
return 0;
重要提示:此错误出现在 Windows 7 上,但在 win XP 上运行,文件被移动!
【问题讨论】:
我猜C:\folder
不存在或C:\test.txt
不存在。在 Windows 7 上,您需要管理员权限才能在资源管理器中实际写入 C:` so just because you see a
test.txt` 并不意味着它实际上位于该位置。但我不知道MoveFile
是否知道这种每用户虚拟存储机制...
【参考方案1】:
您可以在on MSDN 或您的头文件中找到所有错误代码。
2 是 ERROR_FILE_NOT_FOUND
,这意味着当您在 Windows 7 上尝试此操作时无法找到您的源文件。请确保其中包含正确的相对/绝对路径。
【讨论】:
操作,我走错了路。好的,现在我只收到错误代码 5,意思是“ERROR_ACCESS_DENIED”。我尝试移动的文件没有被其他进程使用。 Windows 7 对管理员用户有不同的权限。检查你的 UAC。自己做一些研究。 @daffr32:请阅读我对您问题的评论。当然,您会收到5
,因为与 XP 相比,Windows 7(和 Vista)的规则发生了变化。要么以管理员身份运行程序,要么简单地使用不受权限问题影响的位置来测试您的程序,例如%USERPROFILE%\Desktop
...
好的,现在我以管理员身份运行它并移动了文件。但是我已经以管理员权限登录了,为什么我必须右键单击运行..?如果用户以管理员身份登录,是否可以在不执行此操作的情况下移动文件?
自 Windows Vista 出现以来,您是否使用过 PC?阅读 UAC。【参考方案2】:
您的示例有错字。您的目标文件名缺少反斜杠。在这种情况下,Windows 通常会生成错误 2
【讨论】:
以上是关于Windows 7 上的 C++ MoveFile 错误(2)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Windows 7 上的 C++ 中为虚拟文件夹创建快捷方式?
无法在 Windows 7 机器上的 Microsoft Visual C++ 2010 中运行 OpenCV