閱讀673 返回首頁    go 阿裏雲 go 技術社區[雲棲]


c++實現一個自殺程序

如何實現一個程序,讓他運行後刪除自己?這是個有趣的問題,在網上找到了一個work的方法:

char szCommandLine[MAX_PATH + 10];

 

 //設置本進程為實時執行,快速退出。

 SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);

 SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);

 //通知資源管理器不顯示本程序,當然如果程序沒有真正的刪除,刷新資源管理器後仍會顯示出來的。

 SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, _pgmptr, NULL);

 

 //調用cmd傳入參數以刪除自己

 sprintf(szCommandLine, "/c del /q %s", _pgmptr);

 ShellExecute(NULL, "open", "cmd.exe", szCommandLine, NULL, SW_HIDE);

exit(0)

 

這裏的關鍵在於兩個,一個是將當前的進程優先級設為實時,保證他在啟動下麵的指令前先完成退出,第二個事利用cmd,exe執行一個shell指令刪除當前文件

最後更新:2017-04-03 16:48:47

  上一篇:go 浮躁世界,我思考
  下一篇:go Windows 命令集合