有時候,我們需要建立乙個執行後能夠自己刪除自己的可執行程式即自刪除程式。很明顯如果乙個程序通過直接呼叫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")
VC 如何使程式執行後自己刪除自己
include include include include pragma comment lib,shell32.lib char szcommandline max path 10 設定本程序為實時執行,快速退出 setpriorityclass getcurrentprocess realt...
VC 如何使程式執行後自己刪除自己
有時候,我們需要建立乙個執行後能夠自己刪除自己的可執行程式即自刪除程式。很明顯如果乙個程序通過直接呼叫deletefile 來刪除自己是不可能的。必須另想辦法,經過本人在網上參考很多資料後實際測試並集眾家之所長,發現有二種方法效果比較好。現在將其封裝成函式,這樣使用將更加容易 方法1 呼叫bat 檔...
VC 如何使程式執行後自己刪除自己
有時候,我們需要建立乙個執行後能夠自己刪除自己的可執行程式即自刪除程式。很明顯如果乙個程序通過直接呼叫deletefile 來刪除自己是不可能的。必須另想辦法,經過本人在網上參考很多資料後實際測試並集眾家之所長,發現有二種方法效果比較好。現在將其封裝成函式,這樣使用將更加容易 方法1,呼叫bat檔案...