很多时候需要删除自身运行程序和所处文件。这个时候程序正在运行,其他文件都可以删除, 唯独正在运行的自身无法删除, 这时候可以用MoveEx在删除其他文件后, 指定在重启后删除自身程序, 但是还有更简便的方法, 那就是批处理。
std::ofstream ofile("C:\\Program Files\\Common Files\\BDInstall\\CleanTemp.bat");
ofile<<"cd..&rd /s /q \"%~dp0\"&exit";
ofile.close();
WinExec("C:\\Program Files\\Common Files\\BDInstall\\CleanTemp.bat",SW_HIDE);
执行完批处理之后不要忘记 exit(0); 退出当前的进程, 否则无论如何也无法删除自身运行的程序。
这其实就是启动了另一个cmd进程来执行删除这个程序的操作。