大家好我有一个复制自己的简单程序.当我在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)
有没有人有想法?谢谢...
默认情况下,系统驱动器已锁定权限,以防止任何人复制非管理员的内容.通常,不应该弄乱驱动器的根.如果您需要像安装程序那样做,那么您应该这样做
%PROGRAMFILES%\CompanyName\ProductName弄乱了驱动器的根本就是在寻找麻烦; 这不是程序的去处.
关于此代码的其他说明与您的问题无关:
system("pause")是错的.使用std::cin.get(),如果你真的想要一个可移植的方式来获得该行为.GetModuleFileName失败,你将把一些随机垃圾复制到那个位置,而不是你自己.您需要检查GetLastError每个Win32函数的返回码和代码.