c++实现一个自杀程序

如何实现一个程序,让他运行后删除自己?这是个有趣的问题,在网上找到了一个work的方法:

char szCommandLine[MAX_PATH + 10];

 

 //设置本进程为实时执行,快速退出。

 SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);

 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);

 //通知资源管理器不显示本程序,当然如果程序没有真正的删除,刷新资源管理器后仍会显示出来的。

 SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, _pgmptr, NULL);

 

 //调用cmd传入参数以删除自己

 sprintf(szCommandLine, "/c del /q %s", _pgmptr);

 ShellExecute(NULL, "open", "cmd.exe", szCommandLine, NULL, SW_HIDE);

exit(0)

 

这里的关键在于两个,一个是将当前的进程优先级设为实时,保证他在启动下面的指令前先完成退出,第二个事利用cmd,exe执行一个shell指令删除当前文件

时间: 2024-09-17 04:24:07

c++实现一个自杀程序的相关文章

注册表 应用程序路径-注册表操作:通过注册表来获取到一个应用程序的安装路径~!~!~!~!~!~!~!~!~!

问题描述 注册表操作:通过注册表来获取到一个应用程序的安装路径~!~!~!~!~!~!~!~!~! 10C C币快没有了,希望大神看到不要嫌弃赏金!!!!!!不吝赐教.... 解决方案 HKEY_LOCAL_MACHINEsoftwaremicrosoftwindowscurrentversionuninstall软件名,如果有,一般在这个里面 解决方案二: 你能找到某个软件的注册表 逐个点开 后面 '数据'那一列里面会有路径显示 解决方案三: 一个操作注册表的类 解决方案四: 操作?还是程序控

java-新手,如何为一个swing程序写一个按某键暂停功能?

问题描述 新手,如何为一个swing程序写一个按某键暂停功能? 比如一个贪吃蛇游戏,现在想在键盘上按一个键暂停游戏,比如游戏时按F5暂停游戏,此时我不知道应该把这个键盘事件注册到哪个事件源上呢?也就是在程序运行中由谁来监听这个键盘事件呢?还请大家指点一下! 解决方案 我觉得应该用暂停线程来控制,没用过,你可以试试

sql-我要写一个java程序,去链接oracle数据库,如果获取链接的时间超过1分钟,就抛出异常,请问怎么实现?

问题描述 我要写一个java程序,去链接oracle数据库,如果获取链接的时间超过1分钟,就抛出异常,请问怎么实现? 我要写一个java程序,去链接oracle数据库,如果获取链接的时间超过1分钟,就抛出异常,请问怎么实现? 解决方案 http://blog.chinaunix.net/uid-20752328-id-3451931.html 这里有一篇文章可以解决你的问题你可以点击进去看看; 如果回答对您有帮助请采纳 解决方案二: 说明数据整理不合理吧 解决方案三: 你应该优化数据库结构,或你

我是一个混蛋程序员

我最近收到了这封来自Artsicle公司创始人的邮件,我大一时整个夏天都在这家创业公司里实习. 来自:Scott Carleton 主题:刚刚重构了你一年前写的 find_art.js 脚本 从某些方面上看,我心里想:你是个相当混蛋的程序员. 但从另一方面上讲,真扯蛋,这个脚本在过去的20个月里完美的运行,根本不需要我去碰它.:) 本文的作者: Dan Shipper Scott说的一点没错:我是个混蛋程序员.我不认真的注释我的代码.有时,我会违反DRY编程原则.我不喜欢使用奇妙的三重操作符表达

程序员之路——一个老程序员对刚上大学的学弟学妹的忠告

始终认为,对一个初学者来说,IT界的技术风潮是不可追赶. 我时常看见自己的DDMM们把课本扔了,去买些价格不菲的诸如C#, VB.Net 这样的大部头,这让我感到非常痛心. 而许多搞不清指针是咋回事的BBS站友眉飞色舞的讨论C#里面可以不用指针等等则让我觉得好笑. C#就象当年的ASP 一样,"忽如一夜春风来,千树万树梨花开",结果许多学校的信息学院成了"Web 学院". 96, 97级的不少大学生都去做Web了.当然我没有任何歧视某一行业的意识. 我只是觉得如果他

结果是什么啊-一个小程序,求解答啊

问题描述 一个小程序,求解答啊 在别人文章里看到的程序 程序的输出结果是什么,why? #include int main() { int a[5] = {1,2,3,4,5}; int p = (int)(&a + 1); printf("%d, %dn", *(a + 1), *(p -1)); } 解决方案 int a[5] = {1,2,3,4,5}; int* p = (int*)(&a + 1); printf("%d, %dn", *(

c++-编写一个C++程序,有个输出最长的符合要求的字母。

问题描述 编写一个C++程序,有个输出最长的符合要求的字母. 编写程序: 如果一个字母延伸到中线之上,如d或f,则称其有上出头部分(ascender). 如果一个字母延伸到中线之下,如p或g,则称其有下出头部分(dexcender). 编写程序,读入一个单词文件,输出最长的即不包含上出头部分,也不包含 下出头部分的单词. 解决方案 用动态规划 和查找最长公共子串的算法类似,先构造后缀数组,然后排序,遍历,找到最长的.

J2EE Server下的第一个EJB程序(图文进阶篇)

j2ee|server|程序 作者:翁驰原编按:为了帮助国内J2EE初学者,写了这篇文章,期望能够对广大Java爱好者有所帮助.文章内容:1.本文一步步图文并茂的教读者配置出一个标准的J2EE开发环境2.启动cloudscape数据库的cloudview,并建立数据库3.让读者开发第一个EJB程序4.设置EJB的datasource.部署应用程序等. 开发环境:开发环境使用SUN的j2sdk1.4和j2sdkee1.3.1(注:关于j2sdk的版本,只要是1.3.1_02以后的都可以).数据库:

J2ME 3D编程——第一个3D程序

编程|程序 J2ME 3D编程--第一个3D程序(附源代码) 更多文章请访问:http://blog.csdn.net/mailbomb 参考WTK2.2提供的demo,完成了第一个3D程序,虽然很简单,而且有些问题还不是很清楚,还是把代码共享出来和愿意学习J2ME 3D编程的朋友一起学习. 关于3D编程的资料,可以查阅我的blog. 关于代码的编译和运行说明如下: 1. 以下代码在J2ME WTK2.2下面编译通过. 2. 代码分为两个文件:First3DCanvas.java和First3D