我找自删除的东西 一找一大片,结果一个能直接用的也没有, 我用下面这个倒是可以
如果有必要可以试一下.这个代码是我从 草草的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;
}
如果有必要可以试一下.这个代码是我从 草草的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;
}
自删除程序代码实现
1137

被折叠的 条评论
为什么被折叠?



