这是代码:
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;
}
有没有人有想法? 感谢...
答案 0 :(得分:5)
默认情况下,系统驱动器已锁定权限,以防止任何人复制非管理员的内容。通常,不应该弄乱驱动器的根。如果您需要执行类似安装程序的操作,那么您应该
%PROGRAMFILES%\CompanyName\ProductName
与驱动器的根本混淆是要求麻烦;这不是程序的去处。
此代码的其他说明与您的问题无关:
system("pause")
错了。如果您真的想要一种可移植的方式来获取该行为,请使用std::cin.get()
。GetModuleFileName
失败,您将会将一些随机垃圾复制到该位置,而不是您自己。您需要检查每个Win32函数的返回码和GetLastError
代码。