1. 程式人生 > >C# 應用程式自刪除

C# 應用程式自刪除

示例應用:ClearDir.exe 可用於清理其他檔案 和 自刪除

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClearDir
{
    public class AutoDelet
    {
        /// <summary>
        /// 應用自刪除
        /// </summary>
        public static void deletItself()
        {
            try
            {
                string curExe = System.Windows.Forms.Application.ExecutablePath;

                string tmpName = AppDomain.CurrentDomain.BaseDirectory + "$";
                string name1 = "$";
                while (File.Exists(tmpName))
                {
                    tmpName = tmpName + "$";
                    name1 = name1 + "$";
                }
                File.Move(curExe, tmpName); // 重新命名當前檔案

                string vbsName = AppDomain.CurrentDomain.BaseDirectory + "$";
                string name2 = "$";
                while (File.Exists(vbsName + ".vbs"))
                {
                    vbsName = vbsName + "$";
                    name2 = name2 + "$";
                }

                //Set ws = CreateObject("Wscript.Shell") 
                //WScript.sleep 5000
                //ws.run "cmd /c ?> $",vbhide
                //ws.run "cmd /c del $",vbhide
                //ws.run "cmd /c ?> $.vbs",vbhide
                //ws.run "cmd /c del $.vbs",vbhide

                StringBuilder Str = new StringBuilder();
                Str.AppendLine("Set ws = CreateObject(\"Wscript.Shell\")");
                Str.AppendLine("WScript.sleep 4000");
                Str.AppendLine("ws.run \"cmd /c ?> " + name1 + "\",vbhide");
                Str.AppendLine("ws.run \"cmd /c del " + name1 + "\",vbhide");
                Str.AppendLine("ws.run \"cmd /c ?> " + name2 + ".vbs\",vbhide");
                Str.AppendLine("ws.run \"cmd /c del " + name2 + ".vbs\",vbhide");
                string data = Str.ToString();

                SaveFile(data, vbsName + ".vbs");
                System.Diagnostics.Process.Start(vbsName + ".vbs");

                System.Environment.Exit(0); //退出
            }
            catch(Exception){}
        }

        /// <summary>  
        /// 儲存資料data到檔案處理過程,返回值為儲存的檔名  
        /// </summary>  
        private static String SaveFile(String data, String filePath)
        {
            System.IO.StreamWriter file1 = new System.IO.StreamWriter(filePath, false, Encoding.Default);     //檔案已覆蓋方式新增內容  

            file1.Write(data);                                                              //儲存資料到檔案  

            file1.Close();                                                                  //關閉檔案  
            file1.Dispose();                                                                //釋放物件  

            return filePath;
        }
    }

}