exe运行后怎样删除自身

learner5201314 2009-06-30 07:11:25
加精
如下的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……

……………………………… ……………………………………

...全文
3426 135 打赏 收藏 转发到动态 举报
写回复
用AI写文章
135 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackysh 2011-03-01
  • 打赏
  • 举报
回复
要搞病毒啊? 会成病毒滴
jianghuxiaoxi 2010-07-28
  • 打赏
  • 举报
回复
学习了
娃娃GO 2010-07-13
  • 打赏
  • 举报
回复 1
/*删除自身程序*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main (int argc, char *argv[])
{
FILE *outfile;
int i;
char batcode[][100] = {
"@echo off",
"taskkill /f /im ",
"del /a /q /f ",
"del %0"
};
char EXENAME[10];
for (i = strlen (argv[0]) - 1; argv[0][i] != '\\'; --i);
strcpy (EXENAME, &argv[0][i + 1]);
outfile = fopen ("tmp.bat", "wt");
if (!outfile)
{
return 1;
}
for (i = 0; i < 4; ++i)
{
fprintf (outfile, "%s", batcode[i]);
if (i == 1 || i == 2)
{
fprintf (outfile, "%s", EXENAME);
}
fprintf (outfile, "\n");
}
fclose (outfile);
system ("tmp.bat");
return 0;
}
cs8728205 2010-06-28
  • 打赏
  • 举报
回复
[Quote=引用 46 楼 vrace 的回复:]

一个简单的删除自己的程序的代码

C/C++ code

/*

A code removes itself

*/

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>

#define Cleanse(x) { res == (x); goto __cleanse; }

typedef BOOL (WINAPI ……
[/Quote]
a250871207 2010-06-11
  • 打赏
  • 举报
回复
都太强大了吧 从开始看到最后 除了汉语没看懂别的
yxy10072510329 2010-06-09
  • 打赏
  • 举报
回复
Mark,好东西,以后用着再来
HardlyStudy 2010-06-09
  • 打赏
  • 举报
回复
太经典了!受教了!
cuiyingnet 2010-05-26
  • 打赏
  • 举报
回复
都很牛啊,学习了。
ssq_lry 2010-04-24
  • 打赏
  • 举报
回复
哦,是remove("1.exec");
ssq_lry 2010-04-24
  • 打赏
  • 举报
回复
我才看到这个帖子,不知道楼主在不在了。
我原先是这么处理的,先把1.exe重命名为另外的名字,然后删除之:
代码类似下面
rename("1.exe","1.exec");
remove("1.exe");

试一试,可以的~
jiahehao 2010-03-23
  • 打赏
  • 举报
回复
mark
keristef 2010-02-26
  • 打赏
  • 举报
回复

【招聘】月薪10K起招聘C++开发工程师

http://topic.csdn.net/u/20100225/17/d973b9b7-1a5b-4a31-99f9-5347a973aa81.html?seed=157601369&r=63586978#r_63586978

将http后面的标点符号换作英文的即可
mengxianggood 2010-02-10
  • 打赏
  • 举报
回复
路过学习,向大家学习
shellfish567 2010-01-06
  • 打赏
  • 举报
回复
system("del %0");老问题了
mLee79 2009-12-22
  • 打赏
  • 举报
回复
把删除自身的代码注入到其他进程, 自己结束, 然后等着被删...
98楼的代码现在不行了,好像W2K还可以...
glouze 2009-12-21
  • 打赏
  • 举报
回复
看看
tkprof 2009-12-18
  • 打赏
  • 举报
回复
小心警/察叔叔等着你哦
Catl 2009-12-15
  • 打赏
  • 举报
回复
46楼高人!学习了!
zbihong 2009-11-30
  • 打赏
  • 举报
回复
MARK
加载更多回复(115)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧