C语言实现程序自删除
思路:
创建一个批处理文件,然后在程序最后创建新的进程延时一段时间后来执行这个批处理文件来删除该程序,并利用批处理命令“del %0”来删除批处理文件自身。
整体代码如下:
#include<stdlib.h> #include<stdio.h> #include<Windows.h> void creatbat(char *name)//创建批处理文件 { FILE* fp = NULL; fopen_s(&fp,"a.bat", "w+"); char cmd_code[1024] = "@echo off\ntimeout -t 1 \ndel "; strcat_s(cmd_code,name); strcat_s(cmd_code, ".exe\ndel %0"); fputs(cmd_code, fp); fclose(fp); } char* Get_exe_NAME() { char filepath[1024] = ""; //获取exe执行文件名字(去掉后缀".exe") GetModuleFileName(NULL, filepath, MAX_PATH); *strrchr(filepath, ‘.‘) = ‘\0‘; // 从最左边开始最后一次出现"."的位置(注:strchr/strrchr函数使用) return strrchr(filepath, ‘\\‘) + 1; } int main() { char EXE_name[1024] = ""; STARTUPINFO si = { 0 }; PROCESS_INFORMATION pi; si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = FALSE; strcat_s(EXE_name ,Get_exe_NAME()); char Cmd_run[] = "cmd /c call a.bat"; creatbat(EXE_name); CreateProcess(NULL, Cmd_run, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &si, &pi); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); return 0; }
相关推荐
徐建岗网络管理 2020-07-28
lynjay 2020-06-14
AaronPlay 2020-06-13
chensen 2020-11-14
拉斯厄尔高福 2020-11-04
杜倩 2020-10-29
拉斯厄尔高福 2020-10-19
嵌入式资讯精选 2020-10-15
zhaochen00 2020-10-13
penkgao 2020-10-13
yiyilanmei 2020-10-05
wanshiyingg 2020-09-29
Mars的自语 2020-09-27
shenwenjie 2020-09-24
一个逗逗 2020-09-22
flycony 2020-09-13
zhaochen00 2020-08-20
Biao 2020-08-20
qingsongzdq 2020-08-19