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

Ira*_*ili -2 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;
}
Run Code Online (Sandbox Code Playgroud)

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

Bil*_*eal 5

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

  1. 要求管理员权限
  2. 安装在正确的位置,即 %PROGRAMFILES%\CompanyName\ProductName

弄乱了驱动器的根本就是在寻找麻烦; 这不是程序的去处.

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

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