在winform的开发过程中往往会有这样的应用场景,执行完成某任务之后,程序需要把本身删除掉。比如卸载。分享一个比较简单实现。
思路就是利用批处理,关闭文件后执行bat,bat执行删除主文件,然后删除自己
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(); }
时间: 2024-09-30 20:00:11