BOOL SelfDel()
{
ããSHELLEXECUTEINFO sei;
ããTCHAR szModule [MAX_PATH],szComspec[MAX_PATH],szParams [MAX_PATH];
ãã// è·å¾èªèº«æ件å. è·åcmdçå
¨è·¯å¾æ件å
ããif((GetModuleFileName(0,szModule,MAX_PATH)!=0) &&
ãã(GetShortPathName(szModule,szModule,MAX_PATH)!=0) &&
ãã(GetEnvironmentVariable("COMSPEC",szComspec,MAX_PATH)!=0))
ãã{
ãã// 设置å½ä»¤åæ°.
ããlstrcpy(szParams,"/c del ");
ããlstrcat(szParams, szModule);
ããlstrcat(szParams, " > nul");
ãã// 设置ç»ææå.
ããsei.cbSize = sizeof(sei);
ããsei.hwnd = 0;
ããsei.lpVerb = "Open";
ããsei.lpFile = szComspec;
ããsei.lpParameters = szParams;
ããsei.lpDirectory = 0; sei.nShow = SW_HIDE;
ããsei.fMask = SEE_MASK_NOCLOSEPROCESS;
ãã// å建cmdè¿ç¨.
ããif(ShellExecuteEx(&sei))
ãã{
ãã// 设置cmdè¿ç¨çæ§è¡çº§å«ä¸ºç©ºé²æ§è¡,使æ¬ç¨åºæ足å¤çæ¶é´ä»å
åä¸éåº.
ããSetPriorityClass(sei.hProcess,IDLE_PRIORITY_CLASS);
ãã// å°èªèº«è¿ç¨çä¼å
级置é«
ããSetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS);
ããSetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL);
ãã// éç¥Windowsèµæºæµè§å¨,æ¬ç¨åºæ件已ç»è¢«å é¤.
ããSHChangeNotify(SHCNE_DELETE,SHCNF_PATH,szModule,0);
ããreturn TRUE;
ãã}
ãã}
ããreturn FALSE;
}
å
¶ä»ç¸å
³ç¨åºç´æ¥è°ç¨removeå½æ°å é¤å°±å¥½. åªæç¨åºæ¬èº« éè¦æ°å»ºè¿ç¨å é¤ ä¹å°±æ¯ä¸é¢è¿ä¸ªä»£ç .