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 API MoveFile()无法运行exe

Windows 7 上的 C++ 内存泄漏

如何在 Windows 7 上的 C++ 中为虚拟文件夹创建快捷方式?

无法在 Windows 7 机器上的 Microsoft Visual C++ 2010 中运行 OpenCV

C++ CreateProcess 无法从 Windows 7 上的套接字接收路径 (64)

如何从 Windows 上的 c++ 控制台应用程序打印 UTF-8