C 自删除技术---批处理方式
#include<stdio.h>
#include<windows.h>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" ) // 设置入口地址实现隐藏窗口。
int main(void)
{
FILE *fp;
TCHAR buffer[MAX_PATH];
GetModuleFileName(NULL,buffer,MAX_PATH);
fp = fopen("del.bat","w");
fprintf(fp,"@echo off\r\n");
fprintf(fp,":start\r\n\tif not exist %s goto done\r\n",buffer);
fprintf(fp,"\tdel /f /q %s\r\n",buffer);
fprintf(fp,"goto start\r\n");
fprintf(fp,":done\r\n");
fprintf(fp,"\tdel /f /q %%0"); // 两个%%显示一个%,%0 代表自身。
fclose(fp);
ShellExecuteA(NULL,"open","del.bat",NULL,NULL,SW_HIDE);
return ;
}
@echo off
:start
if not exist del.exe goto done
del /f /q del.exe
goto start
:done
del /f /q %0
GetModuleFileName() 介绍:
功能:获取当前进程已加载模块的文件的完整路径,该模块必须由当前进程加载。
函数原型:DWORD WINAPI GetModuleFileName( HMODULE hModule, LPTSTR lpFilename, DWORD nSize) ;
参数:hModule 表示正在被加载模块的句柄,如果为 NULL,则将当前可执行文件的完整路径复制到 lpFilename 中
nSize 表示复制到 lpFilename 的最大字符数量。
返回值:如执行成功,返回复制到lpFileName的实际字符数量;零表示失败。
ShellExecute() 介绍:
功能:运行一个外部程序 (或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。
函数原型:HINSTANCE ShellExecute(
HWND hwnd, // 指定父窗口句柄。
LPCSTR lpOperation, // 指定动作, 譬如: open、runas、print、edit、explore、find (提示,可以打开网址)
LPCSTR lpFile, // 指定要打开的文件或程序
LPCSTR lpParameters, // 给要打开的程序指定参数; 如果打开的是文件这里应该是 nil
LPCSTR lpDirectory, // 缺省目录
INT nShowCmd // 打开选项 --- SB_HIDE 代表隐藏窗口。
);
SHELLEXECUTEINFO *pExecInfo // 一个指向 SHELLEXECUTEINFO 结构的指针。
);
typedef struct _SHELLEXECUTEINFO {
DWORD cbSize; // 该结构体大小。
ULONG fMask; // 指示其他结构成员的内容和有效性的标志,默认为 0。
HWND hwnd; // 父窗口句柄(用于显示执行该函数时可能出现的任何消息框),可以为 NULL。
LPCSTR lpVerb; // 指定要执行的操作,可以为 NULL。同上 lpOperation,runas 代表以管理员身份运行。
LPCSTR lpFile; // 指定将执行由 lpVerb 参数指定的操作的文件或对象的名称。
LPCSTR lpParameters; // 执行参数,可以为 NULL。
LPCSTR lpDirectory; // 工作目录,可以为 NULL。
int nShow; // 窗体显示方式。
HINSTANCE hInstApp; // 出参,用于了解该函数是否调用成功,可以为 NULL。
void *lpIDList; // ITEMIDLIST结构的地址,存储成员的特别标识符。
LPCSTR lpClass; // 指明文件类别的名字或 GUID,可以为 NULL。
HKEY hkeyClass; // 文件类型的注册表项的句柄,可以为 NULL。
DWORD dwHotKey; // 与应用程序关联的键盘快捷键,可以为 NULL。
union {
HANDLE hIcon; // 取得对应文件类型的图标的Handle,可以为 NULL。
HANDLE hMonitor; // 将文档显示在显示器上的Handle,可以为 NULL。
} DUMMYUNIONNAME;
HANDLE hProcess; // 指向新启动的程序的句柄,可以为 NULL。
} SHELLEXECUTEINFO, *LPSHELLEXECUTEINFO;
C 自删除技术---批处理方式的更多相关文章
- 短视频 SDK 功能点技术实现方式详解
第三方短视频解决方案作为快速切入短视频行业的首选方式,选择一款功能齐全.性能优异的短视频解决方案十分重要. 今天我们来谈谈短视频 SDK 6大重要功能点及其技术实现方式. 短视频拍摄 断点续拍 指在拍 ...
- 短视频 SDK 6大功能技术实现方式详解
第三方短视频解决方案作为快速切入短视频行业的首选方式,选择一款功能齐全.性能优异的短视频解决方案十分重要. 今天我们来谈谈短视频 SDK 6大重要功能点及其技术实现方式. 短视频拍摄 断点续拍 指在拍 ...
- FluentData - 轻量级.NET ORM持久化技术解决方式
FluentData - 轻量级.NET ORM持久化技术解决方式 文件夹: 一.什么是ORM? 二.使用ORM的优势 三.使用ORM的缺点 四.NET下的ORM框架有哪些? 五.几 ...
- Windows Server 2012重复数据删除技术体验
在企业环境中,对磁盘空间的需求是惊人的.数据备份.文件服务器.软件镜像.虚拟磁盘等都需要占据大量的空间.对此,微软在Windows Server 2012中引入了重复数据删除技术.重复数据删除技术通过 ...
- 这才是正确删除 office 的方式
https://support.office.com/zh-cn/article/%E9%80%9A%E8%BF%87%E5%9C%A8%E9%87%8D%E6%96%B0%E5%AE%89%E8%A ...
- 复选框批量删除操作-jquery方式
1.首先在页面添加一个批量删除的按钮:<li class="btns"><input id="deleteSubmit" class=&quo ...
- JDBC2.0操作:结果集,更新,插入,删除,批处理语句
JDBC对ResultSet的支持 JDBC最重要的概念是批处理,可以一次完成多个语句的执行. 可滚动的结果集. 如果想创建可滚动的结果集,则在创建PrepareStatement时候必须指定创建的类 ...
- Spring框架中的AOP技术----注解方式
利用AOP技术注解的方式对功能进行增强 CustomerDao接口 package com.alphajuns.demo1; public interface CustomerDao { public ...
- Spring框架中的AOP技术----配置文件方式
1.AOP概述 AOP技术即Aspect Oriented Programming的缩写,译为面向切面编程.AOP是OOP的一种延续,利用AOP技术可以对业务逻辑的各个部分进行隔离,从使得业务逻辑各部 ...
随机推荐
- Winform中使用ZedGraph实现曲线图中字体去掉边框
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- PHP开发 高可用 高安全App后端(免费)
PHP开发高可用高安全App后端 第1章 本章先讲解课程所含技术点,并演示相关的项目,让小伙伴对课程有个初步的认知,然后再带领小伙伴进行功能的分析,表的ER总关系图 第2章 本章主要讲解课程的一些准备 ...
- AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作
博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...
- Driect3D初始化演示
初始化Direct3D演示 初始化Driect3D类: #include "Common\d3dApp.h" #include <DirectXColors.h> us ...
- charles SSL代理设置
本文参考:charles SSL代理设置 charles SSL代理设置 SSL Proxying Srtting 这里最常用的设置就是第一个ssl proxying,这里记录了需要捕获哪些ssl的信 ...
- Android 正 N 边形圆角头像的实现
卖一下广告,欢迎大家关注我的微信公众号,扫一扫下方二维码或搜索微信号 stormjun94(徐公码字),即可关注. 目前专注于 Android 开发,主要分享 Android开发相关知识和一些相关的优 ...
- c#通过Redis实现轻量级消息组件
最近在开发一个轻量级ASP.NET MVC开发框架,需要加入日志记录,邮件发送,短信发送等功能,为了保持模块的独立性,所以需要通过消息通信的方式进行处理,为了保持框架在部署,使用,二次开发过程中的简易 ...
- Centos安装PhantomJS
1.下载PhantomJS [root@liuge ~]# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-l ...
- MonkeyRunner学习笔记(1)
MonkeyRunner是java编程语言实现的Python写出来的一个API调用工具 MonkeyRunner有三个类:MonkeyRunner,MonkeyDevice,MonkeyImage M ...
- FP-Tree算法详细过程(Java实现)
我就不说FP-Tree的作用.优点什么的了,直接用例子来解释构建FP-Tree和找出所有频繁项集,第一次写博客,不对之处还请指出. 输入文件: testInput.txt T1 T2 T3 T4 T5 ...