winform总结3> 有趣的bat/winform程序完成自己的任务,然后把自己删除

2020-08-31 13:32:08 浏览数 (1)

在winform的开发过程中往往会有这样的应用场景,执行完成某任务之后,程序需要把本身删除掉。比如卸载。分享一个比较简单实现。

思路就是利用批处理,关闭文件后执行bat,bat执行删除主文件,然后删除自己

代码语言:javascript复制
        static void Main(string[] args)
        {
            Console.Write("按任意键删除程序本身");
            Console.ReadKey();
            Thread t = new Thread(() =>
            {
                try
                {
                    /*
                     调试的时候因为DeleteOwn.vshost.exe文件一直被vs占用所以删除会失效,直接执行就可以了
                     */
                    using (FileStream fs = new FileStream("del.bat", FileMode.Create))
                    {
                        using (StreamWriter sw = new StreamWriter(fs, Encoding.ASCII))
                        {
                            sw.WriteLine("@echo off");
                            sw.WriteLine("ping -n 3 127.1 >nul");//休眠三秒后执行,确保程序已经退出
                            sw.WriteLine(string.Concat("del", " "", AppDomain.CurrentDomain.FriendlyName, """));//删除主程序,引号是保证文件名中包含空格也可以删除,FriendlyName修改名称后可以删除
                            sw.WriteLine("del %0");//删除自己
                        }
                    }
                    Process proc = new Process();
                    proc.StartInfo.FileName = "del.bat";
                    proc.StartInfo.UseShellExecute = false;//不显示命令行
                    proc.StartInfo.CreateNoWindow = false;//不在窗体展示
                    proc.Start();
                }
                catch { }
            });
            t.Start();
        }

0 人点赞