当前位置:首页 > .NET其他

自删除程序的制作

发表于 2015-11-27 22:57

有时候开发东西的时候,我们可能会让程序自己删除自己。如果纯粹的是.net程序我想很难做到,因为程序打开后会将自身exe锁定,无法删除。这里我们可以换个思路,借助一个bat来达到我们的目的,因为bat文件是可以删除自身的。简单的说,就是在程序退出之前,启动一个bat文件,待程序退出之后,bat文件会把exe删掉,然后再把自己删掉。


我们可以做一个例子测试,在一个From上放一个按钮,点击按钮后运用上面的逻辑的删除自身。代码如下:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            this.BtnDelete.Click += new EventHandler(BtnDelete_Click);
        }

        private void BtnDelete_Click(object sender, EventArgs e)
        {
            string strFile = Application.ExecutablePath;
            string cmd = ":DeleteFile" + Environment.NewLine +
                "del \"" + strFile + "\"" + Environment.NewLine +
                "if exist \"" + strFile + "\" goto DeleteFile" + Environment.NewLine + Environment.NewLine +
                "del %0";

            string batFilePath = System.IO.Path.Combine(Application.StartupPath, Guid.NewGuid().ToString() + ".bat");

            System.IO.File.WriteAllText(batFilePath, cmd);

            System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();

            startInfo.FileName = batFilePath;
            startInfo.CreateNoWindow = true;
            startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            startInfo.UseShellExecute = false;

            System.Diagnostics.Process.Start(startInfo);

            Application.Exit();
        }

    }

运行程序,界面和exe文件如下:

删除程序的制作 图1

点击删除按钮,SelfDeleteProgram.exe文件被成功删除:

删除程序的制作 图2



本文章由创风网原创,转载请注明出处:http://www.windite.com/article/details/9t0p0c9