问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

c语言程序,如何实现把本身程序删除。如打开1.exe,然后1.exe的功能就是删除本身,运行结束后

发布网友 发布时间:2022-08-17 07:07

我来回答

2个回答

热心网友 时间:2023-10-10 21:26

程序自删除的方式有很多,不过最终的思想不过是关闭本身进程,开启新进程用于删除自身。下面这个方法是用windows自带命令行程序实现删除。
  命令行为 cmd.exe /c del filename
  --------------------------------------------------------------------------------
  代码示例:C语言形式
  #include
  #include
  #include
  BOOL SelfDel()
  {
  SHELLEXECUTEINFO sei;
  TCHAR szMole [MAX_PATH],szComspec[MAX_PATH],szParams [MAX_PATH];
  // 获得自身文件名. 获取cmd的全路径文件名
  if((GetMoleFileName(0,szMole,MAX_PATH)!=0) &&
  (GetShortPathName(szMole,szMole,MAX_PATH)!=0) &&
  (GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))
  {
  // 设置命令参数.
  lstrcpy(szParams,"/c del ");
  lstrcat(szParams, szMole);
  lstrcat(szParams, " > nul");
  // 设置结构成员.
  sei.cbSize = sizeof(sei);
  sei.hwnd = 0;
  sei.lpVerb = "Open";
  sei.lpFile = szComspec;
  sei.lpParameters = szParams;
  sei.lpDirectory = 0; sei.nShow = SW_HIDE;
  sei.fMask = SEE_MASK_NOCLOSEPROCESS;
  // 创建cmd进程.
  if(ShellExecuteEx(&sei))
  {
  // 设置cmd进程的执行级别为空闲执行,使本程序有足够的时间从内存中退出.
  SetPriorityClass(sei.hProcess,IDLE_PRIORITY_CLASS);
  // 将自身进程的优先级置高
  SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
  SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
  // 通知Windows资源浏览器,本程序文件已经被删除.
  SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,szMole,0);
  return TRUE;
  }
  }
  return FALSE;
  }
  ---------------------------------------------------------------------------------

热心网友 时间:2023-10-10 21:26

用system("xxx");调用命令行删除试试,不过不知道行不行,因为运行时必然被占用。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
初中英语语法讲解:名词所有格 关于名词所有格一问 暗区突围画面怎么设置最好-暗区突围画面设置推荐 暗区突围打开的箱子怎么关上 保险箱关闭攻略 暗区突围 暗区突围画面设置怎么弄最佳? 暗区突围 暗区突围光影怎么调? 暗区突围 暗区突围中间白点怎么设置? 暗区突围灵敏度怎么调最稳 暗区突围灵敏度最佳设置方法 我的WIN7 64位系统无法安装打印机HP1136,请支持啊,急。驱动下载也没用... win7电脑连接不上惠普打印机Win7系统安装不了惠普HP1007打印机 c语言删除程序代码 51单片机C语言编程,简易计算器,复位键如何编程会简单些?要求能随时返回主程序开头。。 单片机 定时器溢出标示位复位程序是啥C语言编程的 msp430f149C语言编程,想让程序在循环了3小时后复位,要怎么搞 单片机C语言怎么编译复位语句,我打开蓝牙可以执行,当a=0x06后,执行循迹,然后没法跳出while... C语言中kbhit()函数怎么复位 什么牌子的家用稳压器好用 如何选择pol稳压器并节省电路板空间 电力稳压器的选择要注意的事项 我推荐东山在起微信给别人? 克隆技术他们与原来生物体的___完全相同 克隆产物的遗传物质完全与核提供者一致吗 vivox27有os版本吗 投票怎么老是失败? 注销了怎么找回注销了还能不能找回来呢 自己的被注销了还能登录吗 注销了还能找回来吗? 自己的被注销了还能登录吗? 注销以后可以再次登录吗 公安机关可以查异地的手机通话详单吗? C语言编写一个删除的程序 就是学生管理的那种 谭浩强-《c语言程序设计》第三版单价多少钱? c语言编程:袜子1双10元,2双16,3双20, 如果买4双袜子最少需要多少钱呢? 注销了,里面的数据公安机关还查得出吗? 注销后公安局还能查到聊天记录吗 最高人民法院关于裁判文书引用法律、法规等规范性法律文件的规定 bb霜保质期一般几年 bb霜保质期介绍 怎样做蝴蝶结?成本多少? x27 pro nfc功能怎么坐公交车,坐过的朋友都一下,谢谢 广东省的面积和陕西省的面积哪个大? 陕西和山东经济实力各自如何 请问:梦见统领小魔鬼食人鱼到处杀人,是怎么回事 点击微信我的这个界面后在这个下面出现+状态这是什么意思? 梦到用珍珠编的手链编到你一半是什么意思 这段时间老做奇怪的梦 先是梦到带珍珠项链,手链 戒指啥地 然后过几天梦到 带金项链在过几天 就是梦到被蛇 开USB调试会一直跳屏 手机充电时一直显示USB调试 女生用的好看的头像图片,求好看的头像图片,女生用的,谢谢啦。 携程网机票退票,不可抗因素导致,可以退吗? 因为肺炎,原先携程订的机票提前退掉了,但不久民航就出台了可以免费退票。那这之间的差价还能补回来嘛?