程序自删除代码

 1 BOOL DeleteSelf()
 2 {
 3  TCHAR szModule [MAX_PATH];  
 4  TCHAR szComspec[MAX_PATH];  
 5  TCHAR szParams [MAX_PATH];  
 6 
 7  // get file path names:   
 8  if((GetModuleFileName(0,szModule,MAX_PATH)!=0) &&  
 9   (GetShortPathName(szModule,szModule,MAX_PATH)!=0) &&  
10   (GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))  
11  {  
12   // set command shell parameters   
13   lstrcpy(szParams," /c  del ");  
14   lstrcat(szParams, szModule);  
15   lstrcat(szParams, " > nul");  
16   lstrcat(szComspec, szParams);  
17 
18 
19   // set struct members   
20   STARTUPINFO     si={0};  
21   PROCESS_INFORMATION pi={0};  
22   si.cb = sizeof(si);  
23   si.dwFlags = STARTF_USESHOWWINDOW;  
24   si.wShowWindow = SW_HIDE;  
25 
26   // increase resource allocation to program   
27   SetPriorityClass(GetCurrentProcess(),  
28    REALTIME_PRIORITY_CLASS);  
29   SetThreadPriority(GetCurrentThread(),  
30    THREAD_PRIORITY_TIME_CRITICAL);  
31 
32   // invoke command shell   
33   if(CreateProcess(0, szComspec, 0, 0, 0,CREATE_SUSPENDED|  
34    DETACHED_PROCESS, 0, 0, &si, &pi))  
35   {  
36    // suppress command shell process until program exits   
37    SetPriorityClass(pi.hProcess,IDLE_PRIORITY_CLASS);  
38    SetThreadPriority(pi.hThread,THREAD_PRIORITY_IDLE);   
39 
40    // resume shell process with new low priority   
41    ResumeThread(pi.hThread);  
42 
43    // everything seemed to work   
44    return TRUE;  
45   }  
46   else // if error, normalize allocation   
47   {  
48    SetPriorityClass(GetCurrentProcess(),  
49     NORMAL_PRIORITY_CLASS);  
50    SetThreadPriority(GetCurrentThread(),  
51     THREAD_PRIORITY_NORMAL);  
52   }  
53  }  
54  return FALSE;  
55 
56 }

 

转载于:https://www.cnblogs.com/wind-net/archive/2012/09/03/2668896.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值