最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c#程序刪除自身代碼示例分享

 更新時間:2014年03月10日 11:49:36   作者:  
偶然看到一個可以自刪除的程序,于是了解下如何實(shí)現(xiàn)。然后整理如下,需要的朋友可以參考下

在.NET程序中,因為運(yùn)行中的程序是受系統(tǒng)保護(hù)的,不能自己刪除自身的,所以自刪除的思路:

在關(guān)閉本程序之前啟動新的進(jìn)程打開另一個程序,調(diào)用這個程序來刪除原程序。然后再完成外部進(jìn)程的銷毀。

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

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

復(fù)制代碼 代碼如下:

private static void DeleteItself()
{
string vBatFile = Path.GetDirectoryName(Application.ExecutablePath) + "\\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));
}

//************ 執(zhí)行批處理
WinExec(vBatFile, 0);
//************ 結(jié)束退出
Application.Exit();
}

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

方法二:程序中打開新的進(jìn)程,調(diào)用cmd命令,刪掉程序即可。

復(fù)制代碼 代碼如下:

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 調(diào)用命令窗口執(zhí)行dos指令
ping 1.1.1.1 -n 1 -w 1000 > Nul 利用 ping命令的 –w 參數(shù)指定延時1秒執(zhí)行
& 連接下一個命令(用于一行執(zhí)行多個命令)
Del <Application.ExecutablePath> 刪除可執(zhí)行文件

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

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

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

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

相關(guān)文章

最新評論

华坪县| 庆城县| 文登市| 大连市| 盐亭县| 丰宁| 恭城| 呼伦贝尔市| 时尚| 景宁| 和政县| 司法| 嘉峪关市| 英吉沙县| 应用必备| 新沂市| 嘉兴市| 武义县| 衡阳市| 九龙坡区| 合水县| 金溪县| 龙口市| 庆元县| 阿勒泰市| 红安县| 穆棱市| 错那县| 菏泽市| 通辽市| 西安市| 汶川县| 通河县| 宜阳县| 邵阳市| 洛隆县| 莱阳市| 黄石市| 鱼台县| 大理市| 新乐市|