C ++ CopyFile()不适用于c:\

时间:2011-09-05 16:35:28

标签: c++ winapi

你好,我有一个复制自己的简单程序。当我在D盘中复制时,它的工作很棒。但是当我试图在c盘上复制它时没有任何反应。

这是代码:

int main()
{
        string appDir = "";
        appDir = std::string( result, GetModuleFileName( NULL, result, MAX_PATH ) );
    CopyFile(appDir.c_str(), "C:\\SelfCopyingApp.exe", 1);

    system("PAUSE");
    return 0;
}

有没有人有想法? 感谢...

1 个答案:

答案 0 :(得分:5)

默认情况下,系统驱动器已锁定权限,以防止任何人复制非管理员的内容。通常,不应该弄乱驱动器的根。如果您需要执行类似安装程序的操作,那么您应该

  1. 要求管理员权利
  2. 安装在正确的位置,即%PROGRAMFILES%\CompanyName\ProductName
  3. 与驱动器的根本混淆是要求麻烦;这不是程序的去处。

    此代码的其他说明与您的问题无关:

    1. system("pause")错了。如果您真的想要一种可移植的方式来获取该行为,请使用std::cin.get()
    2. 您应该使用Unicode。
    3. 如果GetModuleFileName失败,您将会将一些随机垃圾复制到该位置,而不是您自己。您需要检查每个Win32函数的返回码和GetLastError代码。