程序自删除实现 可用的SDK的

自删除程序代码实现
我找自删除的东西 一找一大片,结果一个能直接用的也没有, 我用下面这个倒是可以

如果有必要可以试一下.这个代码是我从 草草的SEU_PEER中拿出来的

BOOLSelfDelete()
...{
TCHARszModule[MAX_PATH],
szComspec[MAX_PATH],
szParams[MAX_PATH];

//getfilepathnames:
if((GetModuleFileName(0,szModule,MAX_PATH)!=0)&&
(GetShortPathName(szModule,szModule,MAX_PATH)
!=0)&&
(GetEnvironmentVariable(
"COMSPEC",szComspec,MAX_PATH)!=0))
...{
//setcommandshellparameters
lstrcpy(szParams,"/cdel");
lstrcat(szParams,szModule);
lstrcat(szParams,
">nul");
lstrcat(szComspec,szParams);


//setstructmembers
STARTUPINFOsi=...{0};
PROCESS_INFORMATIONpi
=...{0};
si.cb
=sizeof(si);
si.dwFlags
=STARTF_USESHOWWINDOW;
si.wShowWindow
=SW_HIDE;

//increaseresourceallocationtoprogram
SetPriorityClass(GetCurrentProcess(),
REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(),
THREAD_PRIORITY_TIME_CRITICAL);

//invokecommandshell
if(CreateProcess(0,szComspec,0,0,0,CREATE_SUSPENDED|
DETACHED_PROCESS,
0,0,&si,&pi))
...{
//suppresscommandshellprocessuntilprogramexits
SetPriorityClass(pi.hProcess,IDLE_PRIORITY_CLASS);
SetThreadPriority(pi.hThread,THREAD_PRIORITY_IDLE);

//resumeshellprocesswithnewlowpriority
ResumeThread(pi.hThread);

//everythingseemedtowork
returnTRUE;
}

else//iferror,normalizeallocation
...{
SetPriorityClass(GetCurrentProcess(),
NORMAL_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(),
THREAD_PRIORITY_NORMAL);
}

}

returnFALSE;
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值