原文在這裡:
有時候,我們需要建立乙個執行後能夠自己刪除自己的可執行程式即自刪除檔案。很明顯如果乙個程序通過直接呼叫deletefile()來刪除自己是不可能的。必須另想辦法,經過本人在網上參考很多資料後實際測試並集眾家之所長,發現有二種方法效果比較好。現在將其封裝成函式,這樣使用將更加容易:
方法1,呼叫bat檔案。
//向指定檔案寫入文字。如果檔案不存在就建立。
int writetexttofile(const char szfilename, const char *lpsztext)
方法二。呼叫系統的cmd程式並傳入引數。
呼叫方法與前面相同。
這二種方法都不會出現dos程式視窗,完全達到了無影無蹤的刪除效果,更加不會出現有的程式自刪除後仍顯示程式圖示,要重新整理資源管理器後才發現程式被刪除了。
再對**作下講解:
1._pgmptr 的定義為extern char * _pgmptr,stdlib.h檔案對其說明為:points to the module (exe) name。使用_pgmptr與使用getmodulefilename(null, szexepath, max_path);來得到程式的路徑是等效的。
2.shellexecute()最後乙個引數為sw_hide表示隱藏視窗。
3.dos命令del的/q引數表示安靜模式,這樣刪除檔案時就不會出現要求使用者確認的提示對話方塊了。
附:二種方法都要加入標頭檔案及lib庫
#include
#include
#include
#include
#pragma comment(lib, "shell32.lib")
用C 實現(程式自殺)
近日看到詢問如何實現程式執行之後把自己刪除的方法,使用者只要一執行程式,可執行檔案就沒有了,可是程式還是在跑,膽小的只怕要喊 鬼呀 老婆,快出來看上帝 甚麼的。其實最典型的用法是寫反安裝程式.閒來無事,查到一種還算巧妙的 刪除自己 的方法。大家都知道,一般的程式執行的時候,可執行檔案本身是被作業系統...
Delphi實現程式自銷毀(自殺)
unit unit1 inte ce uses windows,messages,sysutils,classes,graphics,controls,forms,dialogs,stdctrls type tform1 class tform button1 tbutton procedure d...
Delphi程式「自殺」的有效辦法
某個應用程式a,長期執行後,時不時出現 external exception e06d7363 錯誤,然後程式a就失去了反應,既不工作也不退出。分析發現,程式a在執行中依賴第三方dll,上述錯誤可能由dll引發,因此無法避免該問題出現。好在程式a從啟動執行到出錯的時間基本在2天以上,不算頻繁,因此出...