exe运行后怎样删除自身
如下的1.exe:
#include stdio.h
#include stdlib.h
main()
{
system("start notepad.exe");
}
要想1.exe运行后删除自身,在后面加上
system("del /f /q 1.exe");
但我试过几遍都不行,起初我以为是路径的问题;但改成了system("del /f /q 1.*");都不行,所有的文件名为1的文件都被删除了,就是1.exe还在!!!
1.bat却很好做到:
echo off
start notepad.exe
del /f /q 1.bat
这是为什么呢,难道EXE在运行,不能删除自身?
但为什么灰鸽子、木马等软件一双击就没了?
希望高手指教! 最好是不要生存临时的bat文件,删除1.exe再结束bat……
……………………………… ……………………………………
[解决办法]
当然,还可以改进.
#include <windows.h>
#include <fstream>
using namespace std;
int main()
{
ofstream file;
file.open("1.bat");
file<<"del 1.exe"<<endl;
file<<"del 1.bat"<<endl;
file.close();
ShellExecute(NULL,"open","1.bat","",NULL,SW_SHOWNORMAL);
}
[解决办法]
bat里面如果想删除自身,最好别把文件名写死了,这样既可:
del /f /q /a "%~f0"