c/c++编程学习:程序自删除

2023-11-03

程序自删除的方式有很多,不过最终的思想不过是关闭本身进程,开启新进程用于删除自身。下面这个方法是用windows自带命令行程序实现删除。

命令行为 cmd.exe /c del filename

代码示例:C语言形式

#include

#include

#include

BOOL SelfDel()

{

SHELLEXECUTEINFO sei;

TCHAR szModule [MAX_PATH],szComspec[MAX_PATH],szParams [MAX_PATH];

// 获得自身文件名. 获取cmd的全路径文件名

if((GetModuleFileName(0,szModule,MAX_PATH)!=0) &&

(GetShortPathName(szModule,szModule,MAX_PATH)!=0) &&

(GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))

{

// 设置命令参数.

lstrcpy(szParams,"/c del ");

lstrcat(szParams, szModule);

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,szModule,0);

return TRUE;

}

}

return FALSE;

}


另外如果你想更好的提升你的编程能力,学好C语言C++编程!弯道超车,快人一步!笔者这里或许可以帮到你~

UP在主页上传了一些学习C/C++编程的视频教程,有兴趣或者正在学习的小伙伴一定要去看一看哦!会对你有帮助的~

分享(源码、项目实战视频、项目笔记,基础入门教程)

免费学习:

免费学习:

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

c/c++编程学习:程序自删除 的相关文章

  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 如何使用 Castle Windsor 将对象注入到 WCF IErrorHandler 实现中?

    我正在使用 WCF 开发一组服务 该应用程序正在使用 Castle Windsor 进行依赖注入 我添加了一个IErrorHandler通过属性添加到服务的实现 到目前为止一切正常 这IErrorHandler对象 一个名为FaultHan
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • 对 std::vector 进行排序但忽略某个数字

    我有一个std vector
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 打破 ReadFile() 阻塞 - 命名管道 (Windows API)

    为了简化 这是一种命名管道服务器正在等待命名管道客户端写入管道的情况 使用 WriteFile 阻塞的 Windows API 是 ReadFile 服务器已创建启用阻塞的同步管道 无重叠 I O 客户端已连接 现在服务器正在等待一些数据
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 使 Guid 属性成为线程安全的

    我的一个类有一个 Guid 类型的属性 该属性可以由多个线程同时读写 我的印象是对 Guid 的读取和写入不是原子的 因此我应该锁定它们 我选择这样做 public Guid TestKey get lock testKeyLock ret
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • ADC0809的使用

    一 前言介绍 使用ADC0809对一个模拟电压进行转换 转换后的电压使用数码管显示出来 二 ADC0809的介绍 1 ADC0809简介 ADC0809是采用COMS工艺制造的双列直插式单片8位A D转换器 分辨率8位 精度7位 带8个模拟
  • Ubuntu 20网络和DNS设置

    问题 Ubuntu 20 DNS 被自动覆盖成127 0 0 53 在界面环境下设置的静态IP地址 然后可以ping通IP 但是无法访问网页 初步判断是DNS问题 查看sudo cat etc resolv conf内容发现是127 0 0
  • github上好的网站

    https github com Trinea android open project
  • vue搭建后台管理页面(点击左侧导航,切换右侧内容)

    home vue页面
  • 不打无准备之战,Python100道经典题目,参考学习(附答案)

    近年来 Python在编程语言界里赚足了风头 无论是受欢迎程度 还是薪资待遇 都非常可观 相应的 Python岗位要求也越来越高 无论你是零基础还是老前辈 在Python面试中都不能轻视 不打无准备之战 在平时我们就需要多积累 今天就给大家
  • 统计学习第二弹--描述性统计(理论公式)

    思维导图 目录结构 集中趋势 众数 一组数据中出现频数最多的数值 常用用Mo表示 求众数 def Max number nums res for num in nums res setdefault num 0 res num 1 res
  • 用IO流实现用户的相关设置

    文章目录 用IO流实现用户的相关设置 一 目录 二 实例代码 2 1userDao 2 2UserServlet 三 演示代码 用IO流实现用户的相关设置 一 目录 二 实例代码 2 1userDao 建立一个Dao的包 在创建一个user
  • 零基础的Java小白如何准备初级开发的面试

    对于各位Java程序员来说 只要能有实践的机会 哪怕工资再低 公司情况再一般 只要自己上心努力 就可能在短时间内快速提升 甚至在工作2年后进大厂都有希望 因为项目里真实的开发实践环境是平时学习不能模拟的 所以很多想从事Java开发的同学其实
  • VirtualBox 无法使用usb2.0及3.0问题

    环境为ubuntu下安装的VirtualBox 虚拟机是win7 1 VirtualBox共享usb需要先添加用户组 查看用户组状态命令 cat etc group vboxusers 127 user usbfs 1001 user us
  • win10 + CUDA10.0 + cuDNN7.6.5 + Pytorch 安装教程

    CUDA10 0 cuDNN 7 6 5 安装可自行百度 教程很多 conda create name pytracking python 3 7 conda activate pytracking conda install pytorc
  • 【源码+文档】基于scrapy-redis的分布式网络爬虫

    第1章 引言 分布式是大数据时代流行的一个词 比如常见的分布式计算 分布式存储 分布式爬虫等等 分布式爬虫 从字面的意义上来说是集群爬虫 就是将爬虫任务分配给多台机器同时进行处理 与之对应的是单机爬虫 单点部署 单点操作 分布式爬虫相当于将
  • 大语言模型能否替换传统多轮任务型问答系统?

    语言模型能否替换传统多轮任务型问答系统 以下文章来源于无数据不智能 作者森本悟 概述 本论文 Are LLMs All You Need for Task Oriented Dialogue 的研究背景是 大型语言模型 LLMs 由于其对话
  • 快递、外卖、网购自动定位及模糊检索收/发件地址功能实现

    概述 目前快递 外卖 团购 网购等行业 为了简化用户在收发件地址填写时的体验感 使用辅助定位及模糊地址检索来丰富用户的体验 本次demo分享给大家 让大家理解辅助定位及模糊地址检索的功能实现过程 以及开发出自己理想的作品 详细 概述 后台基
  • NVIDIA TX2上ROS安装

    TX2上的ROS自动安装git上有现成的 记录如下 首先 下载git上的自动安装脚本 gt git clone https github com jetsonhacks installROSTX2 git 其次 安装全量ros版本 inst
  • 6.算法通关面试 --- 广度优先and深度优先搜索

    1 广度优先搜索 深度优先搜索
  • MATLAB数字图像处理系统——边缘检测

    实验4 1 边缘检测 Sobel Prewitt Log边缘算子 一 实验目的 1 熟悉matlab图像处理工具箱及图像边缘检测函数的使用 2 理解和掌握图像边缘检测 Sobel Prewitt Log边缘算子 的方法和应用 二 实验设备
  • ASTGCN

    sample week sample day sample hour sample target time sample sample append hour sample 1 vertices features sequences tim
  • 取消DruidDataSource连接失败自动重试

    背景 最近在业务开发的时候 遇到了一个场景 需要遍历数据库连接信息创建数据库连接 而原来我配置的DruidDataSource在创建数据库连接失败后会自动重试 且是无限重试 而我期望的逻辑是 但创建数据库连接失败后 尝试几次依然失败就跳过该
  • Unity 基于群体寻路的解决方案

    群体寻路是一种模拟群体行为的技术 它使得游戏中的角色能够以一种有组织的方式移动 在群体中 每个角色都有自己的目标位置 并且会根据周围的情况决定如何移动 群体寻路可以帮助我们实现一些有趣的场景 比如鸟群飞行 鱼群游动等 对啦 这里有个游戏开发
  • c/c++编程学习:程序自删除

    程序自删除的方式有很多 不过最终的思想不过是关闭本身进程 开启新进程用于删除自身 下面这个方法是用windows自带命令行程序实现删除 命令行为 cmd exe c del filename 代码示例 C语言形式 include inclu