码迷,mamicode.com
首页 > 编程语言 > 详细

C语言实现程序自删除

时间:2020-06-06 18:56:00      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:fopen   amp   位置   OLE   pen   info   ati   执行   pat   

思路:

创建一个批处理文件,然后在程序最后创建新的进程延时一段时间后来执行这个批处理文件来删除该程序,并利用批处理命令“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;
}

 

C语言实现程序自删除

标签:fopen   amp   位置   OLE   pen   info   ati   执行   pat   

原文地址:https://www.cnblogs.com/stupidwf/p/13055564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!