程序删除自身

2023-11-20

Windows平台下删除自身的方法

通过bat文件删除

@echo   off
loop 
del  access.exe  
if   exist   access.exe
goto   loop
del   DelMe.bat

C/C++语言表示创建DelMe.bat文件

FILE *pFile=NULL;
pFile=fopen("DelMe.bat","w");
if(pFile==NULL)
{
  return;
}
fputs("@echo   off/n",pFile);
fputs("loop/n",pFile);
fputs("del  access.exe/n",pFile);
fputs("if exist  access.exe/n",pFile);
fputs("goto  loop/n",pFile);
fputs("del  DelMe.bat/n",pFile);

再通过API函数执行DelMe.bat文件

创建线程实现程序删除自身

#include <windows.h>
BOOL SelfDelete();
//----------------------------------------------------------------
int main()
{
    SelfDelete();
    exit(0);
    return 0;
}
//---------------------------------------------------------------
BOOL SelfDelete()
{
 TCHAR szModule [MAX_PATH],
  szComspec[MAX_PATH],
  szParams [MAX_PATH];

 // get file path names:
 if((GetModuleFileName(0,szModule,MAX_PATH)!=0) &&
  (GetShortPathName(szModule,szModule,MAX_PATH)!=0) &&
  (GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))
 {
  // set command shell parameters
  lstrcpy(szParams," /c del ");
  lstrcat(szParams, szModule);
  lstrcat(szParams, " > nul");
  lstrcat(szComspec, szParams);


  // set struct members
  STARTUPINFO  si={0};
  PROCESS_INFORMATION pi={0};
  si.cb = sizeof(si);
  si.dwFlags = STARTF_USESHOWWINDOW;
  si.wShowWindow = SW_HIDE;

  // increase resource allocation to program
  SetPriorityClass(GetCurrentProcess(),
   REALTIME_PRIORITY_CLASS);
  SetThreadPriority(GetCurrentThread(),
   THREAD_PRIORITY_TIME_CRITICAL);

  // invoke command shell
  if(CreateProcess(0, szComspec, 0, 0, 0,CREATE_SUSPENDED|
   DETACHED_PROCESS, 0, 0, &si, &pi))
  {
   // suppress command shell process until program exits
   SetPriorityClass(pi.hProcess,IDLE_PRIORITY_CLASS);
   SetThreadPriority(pi.hThread,THREAD_PRIORITY_IDLE); 

   // resume shell process with new low priority
   ResumeThread(pi.hThread);

   // everything seemed to work
   return TRUE;
  }
  else // if error, normalize allocation
  {
   SetPriorityClass(GetCurrentProcess(),
    NORMAL_PRIORITY_CLASS);
   SetThreadPriority(GetCurrentThread(),
    THREAD_PRIORITY_NORMAL);
  }
 }
 return FALSE;
}

bat批处理删除自身

attrib -h -s -r -a %0
del %0

第一行代码是把批处理自身可能有的 隐藏,系统,只读,存档 属性去掉
第二行代码是删除批处理自身(%0代表自身)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

程序删除自身 的相关文章

随机推荐

  • C++11新特性:四种类型转换cast说明

    目录 引言 1 static cast 1 1 基本类型转换 1 2 类的上行转换 安全 1 3 类的下行转换 不安全 2 const cast 2 1 改变常量属性 3 dynamic cast 3 1 类的上行转换 安全 3 2 类的下
  • <Linux开发>驱动开发 -之- Linux LCD 驱动

    Linux开发 驱动开发 之 Linux LCD 驱动 交叉编译环境搭建 Linux开发 linux开发工具 之 交叉编译环境搭建 uboot移植可参考以下 Linux开发 之 系统移植 uboot移植过程详细记录 第一部分 Linux开发
  • 碎碎念之工作②

  • [Transformer] PVT系列:PVT & CPVT & Twins

    PVT Pyramid Vision Transformer A Versatile Backbone for Dense Prediction without Convolutions 论文 https arxiv org abs 210
  • Windows环境下使用GTK

    一 前言 维基百科 GTK 原名GTK 最初是GIMP的专用开发库 GIMP Toolkit 后来发展为Unix like系统下开发图形界面的应用程序的主流开发工具之一 GTK是自由软件 并且是GNU计划的一部分 自2019年2月6日起 G
  • C语言函数大全-- x 开头的函数(4)

    x 开头的函数 4 1 xdr struct 1 1 函数说明 1 2 演示示例 2 xdr u char 2 1 函数说明 2 2 演示示例 3 xdr u hyper 3 1 函数说明 3 2 演示示例 4 xdr u int 4 1
  • 【瑞吉外卖day04】

    菜品管理业务 1 文件上传下载 1 1 文件上传介绍 1 2 文件下载介绍 1 3 文件上传代码实现 前端页面直接使用现成的 源码这里
  • Freertos代码之临界函数

    芯 片 STM32F427VITx 指 令 集 ARMV7 Thumb2 编译环境 arm gcc FreeRTOS有如下临界节管理的宏定义 define portSET INTERRUPT MASK FROM ISR ulPortRais
  • Java上传文件大小受限怎么解决

    一般控制台上会出现像这样 1048576 bytes 这大小限制 org springframework web multipart MaxUploadSizeExceededException Maximum upload size ex
  • rttread-nano 使用记录:rt_kprintf函数格式化打印无法左对齐

    rttread nano 使用记录 rt kprintf函数格式化打印无法左对齐 今天用rt kprintf函数打印输出一个表格 为了表格好看每一列我都使用格式化参数 负号符号设置为了左对齐 但是发现无法打印 也无法打印浮点数 换成微库的p
  • 使用presto调用hive

    启动hive metastore服务 hive service hivestore 关于最后的一个 告诉小白一下是后台运行的意思 presto配置使用hive插件 presto所在的文件中etc 自建 的catalog 自建 中hive p
  • 输出数组的最大值、最小值及其位置

    题目 输入一个长度为10的数组 输出数组的最大值 最小值及其最大值 最小值在数组里的位置 思路 如果只需找出最大值 我们可以假定最大值max为数组的第一个元素 然后将剩余的元素逐个和max比较 如果有比max更大的元素 就将其记录下来 直到
  • Qt HTTP POST json 访问服务器

    form格式访问服务器 QByteArray postArray postArray append grant type authorization code postArray append client id 32u2w95f200D4
  • 数据中台与数据仓库区别

    1 数据源不同 先从数据来源上来说 数据中台的数据来源可以是结构化数据或者非结构化的数据 而传统数仓的数据来源主要是业务数据库 数据格式也是以结构化数据为主 2 数据的处理不同 数据中台不仅仅是汇聚企业各种数据 而且让这些数据遵循相同的标准
  • 用户复购周期计算

    用户复购周期 两次购买之间的时间间隔 一 首先使用SQL进行计算 注 用户在一天中发生多次购买则只记为1次购买 1 根据用户id与购买日期进行分组 将一天内发生多次消费记录进行合并 DROP TABLE member Repurchase
  • Python播放GIF图片(ChatGPT代码参考)

    在网上找了好几个方法 最后还是出现各种问题 解决不了播放GIF的功能 最后 通过ChatGPT给出了简单明了的方案 使用第三方库imageio和matplotlib animation来实现 调试直接通过 但有小瑕疵 就是显示gif时隐藏掉
  • caffe源码 之 CPU与GPU数据同步类

    本文主要解析caffe源码文件 src caffe SycedMem cpp 该文件主要实现cpu与gpu的内存同步 先看SycedMem hpp中SycedMem的类定义 ifndef CAFFE SYNCEDMEM HPP define
  • 简单的连接数据库的Web登录界面

    简单的连接数据库的Web登录界面 一 需求分析 实现在登录界面输入用户名和密码 连接数据库 与数据库信息进行比对 若用户名和密码相互匹配 则显示登陆成功 若不正确 选择重新输入 二 工具 1 MySql 2 Tomcat 3 Java EE
  • spring boot 定时任务参数设置

    cron参数 分别对应 秒 分 时 日 月 年 0 0 10 14 16 每天上午10点 下午2点 4点 逗号之间连接起来算一个 0 0 12 每天中午12点触发 0 0 5 0 每5分钟执行一次 0 10 14 16 每天上午10点 下午
  • 程序删除自身

    Windows平台下删除自身的方法 通过bat文件删除 echo off loop del access exe if exist access exe goto loop del DelMe bat 用C C 语言表示创建DelMe ba