欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

流程:首先生成一個(gè)BAT文件,然后讓BAT執(zhí)行刪除動(dòng)作,就是:
1、生成刪除的BAT
2、運(yùn)行BAT
3、快速退出
4、BAT開(kāi)始刪除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);

方法二:程序中打開(kāi)新的進(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ù)指定延時(shí)1秒執(zhí)行
& 連接下一個(gè)命令(用于一行執(zhí)行多個(gè)命令)
Del <Application.ExecutablePath> 刪除可執(zhí)行文件

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

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

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

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

相關(guān)文章

  • 深入解析C#中的命名實(shí)參和可選實(shí)參

    深入解析C#中的命名實(shí)參和可選實(shí)參

    這篇文章主要介紹了C#中的命名實(shí)參和可選實(shí)參,在COM接口相關(guān)的開(kāi)發(fā)中經(jīng)常可以用到,需要的朋友可以參考下
    2016-01-01
  • C#算法之回文數(shù)

    C#算法之回文數(shù)

    這篇文章介紹了C#算法之回文數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C#并發(fā)容器之ConcurrentDictionary與普通Dictionary帶鎖性能詳解

    C#并發(fā)容器之ConcurrentDictionary與普通Dictionary帶鎖性能詳解

    這篇文章主要介紹了C#并發(fā)容器之ConcurrentDictionary與普通Dictionary帶鎖性能詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • C# DataTable數(shù)據(jù)遍歷優(yōu)化詳解

    C# DataTable數(shù)據(jù)遍歷優(yōu)化詳解

    這篇文章主要介紹了C# DataTable數(shù)據(jù)遍歷優(yōu)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • Unity實(shí)現(xiàn)截屏以及根據(jù)相機(jī)畫面截圖

    Unity實(shí)現(xiàn)截屏以及根據(jù)相機(jī)畫面截圖

    這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)截屏以及根據(jù)相機(jī)畫面截圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用

    C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用

    這篇文章主要給大家介紹了關(guān)于C#學(xué)習(xí)教程之Socket的簡(jiǎn)單使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • C#中const,readonly和static關(guān)鍵字的用法介紹

    C#中const,readonly和static關(guān)鍵字的用法介紹

    這篇文章介紹了C#中const,readonly和static關(guān)鍵字的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • C#特性 擴(kuò)展方法

    C#特性 擴(kuò)展方法

    在我們的編程生涯中我們要使用很多很多類庫(kù),這些類庫(kù)有的是我們自己開(kāi)發(fā)的,我們有她的代碼,有的是第三方發(fā)布的,我們不僅沒(méi)有他們的代碼,連看的機(jī)會(huì)都沒(méi)有
    2014-12-12
  • C#指針變量與unsafe的實(shí)現(xiàn)

    C#指針變量與unsafe的實(shí)現(xiàn)

    本文主要介紹了C#指針變量與unsafe的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • C#實(shí)現(xiàn)遞歸調(diào)用的Lambda表達(dá)式

    C#實(shí)現(xiàn)遞歸調(diào)用的Lambda表達(dá)式

    這篇文章介紹了C#實(shí)現(xiàn)遞歸調(diào)用的Lambda表達(dá)式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06

最新評(píng)論