国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#刪除程序自身【總結】

2019-11-17 03:20:14
字體:
來源:轉載
供稿:網友

C#刪除程序自身【總結】

  偶然看到一個可以自刪除的程序,于是了解下如何實現。然后整理如下:

  思路:

  在.NET程序中,因為運行中的程序是受系統保護的,不能自己刪除自身的,所以自刪除的思路:

  在關閉本程序之前啟動新的進程打開另一個程序,調用這個程序來刪除原程序。然后再完成外部進程的銷毀。

  操作:

方法一:程序中打開新的進程,刪掉程序后,再銷毀進程本身

  流程:首先生成一個BAT文件,然后讓BAT執行刪除動作,就是:    1、生成刪除的BAT    2、運行BAT    3、快速退出    4、BAT開始刪除EXE    5、BAT刪除BAT

    /// <summary>    /// 刪除程序自身(本文地址:http://m.survivalescaperooms.com/Interkey/p/DeleteItself.html)【推薦】    /// </summary>    PRivate static void DeleteItself()    {        string vBatFile = Path.GetDirectoryName(application.ExecutablePath) + "http://DeleteItself.bat";        using (StreamWriter vStreamWriter = new StreamWriter(vBatFile, false, Encoding.Default))        {            vStreamWriter.Write(string.Format(                ":del/r/n" +                " del /"{0}/"/r/n" +                "if exist /"{0}/" goto del/r/n" +                "del %0/r/n", Application.ExecutablePath));        }        //************ 執行批處理        WinExec(vBatFile, 0);        //************ 結束退出        Application.Exit();    }

   [System.Runtime.InteropServices.DllImport("kernel32.dll")]    public static extern uint WinExec(string lpCmdLine, uint uCmdShow);

方法二:程序中打開新的進程,調用cmd命令,刪掉程序即可。

    /// <summary>    /// 刪除程序自身(本文地址:http://m.survivalescaperooms.com/Interkey/p/DeleteItself.html)    /// </summary>    private static void DeleteItselfByCMD()    {        ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 1000 > Nul & Del " + Application.ExecutablePath);        psi.WindowStyle = ProcessWindowStyle.Hidden;        psi.CreateNoWindow = true;        Process.Start(psi);        Application.Exit();    }

下面解釋命令的意思:

  cmd /c 調用命令窗口執行dos指令  ping 1.1.1.1 -n 1 -w 1000 > Nul 利用 ping命令的 –w 參數指定延時1秒執行  & 連接下一個命令(用于一行執行多個命令)  Del <Application.ExecutablePath> 刪除可執行文件  可惜這種方法 由于xp不支持Choice命令,沒有測試成功。但在Win8 x64位上成功刪除自身。

  總結:

方法一:使用bat文件刪除程序+自身,但其有臨時bat文件生成。

方法二:利用某些dos命令的延時效果,在程序退出之后自動刪除程序自身思路非常巧妙。也避免了bat方式,循環刪除的問題。當然這種方法從本質上應該和方法一差不多。

   但由于xp不支持Choice命令,所以在使用方面上推薦方法一。

   本文地址:http://m.survivalescaperooms.com/Interkey/p/DeleteItself.html

  擴展:

  突然想到“伴隨進程”,也就是一個程序產生兩個進程,定時檢測另一個進程信號,如果其中一個進程被結束了,另一個進程就立刻重新啟動被結束的進程,實現程序無法異常結束(特別是Windows結束任務)的效果!

  對于這種伴隨進程(一個主要工作進程,一個伴隨進程)結束的辦法:快速結束兩個進程,當然如果兩個進程的檢測定時足夠短,這種方法就不一定有效了。但可以用另一個假的伴隨進程來處理而達到結束兩個進程的目的。

  歡迎加群:.NET反編譯|破解群號:183569712(請輸入驗證信息:博客園)..NET反編譯|破解

  參考:

程序快速刪除自己

用C#寫自己刪除自己的程序

How To Make Your Application Delete Itself Immediately

兩個互相監控進程的方法


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大港区| 江永县| 濮阳市| 平昌县| 普安县| 霸州市| 南通市| 赤壁市| 高陵县| 都江堰市| 集贤县| 东台市| 乌兰浩特市| 高州市| 黄梅县| 夹江县| 邵武市| 朝阳区| 益阳市| 梅河口市| 偃师市| 阳原县| 许昌县| 清远市| 平谷区| 社旗县| 施甸县| 泾川县| 甘南县| 惠来县| 大关县| 托里县| 正蓝旗| 绍兴县| 九台市| 汉阴县| 巴彦县| 涟水县| 绥中县| 项城市| 蒙山县|