一般是在MainWindow_Closed 事件中调用批处理命令删除。
在借鉴别人的想法的基础上的算是改进。
自删除步骤:
1.删除文件
2.删除存放文件夹。
实现代码:
1 private static void DeleteItselfByCMD() 2 { 3 string baseDirectory = System.AppDomain.CurrentDomain.BaseDirectory; 4 StringBuilder sb = new StringBuilder(); 5 sb.Append(@" /C ping 1.1.1.1 -n 1 -w 1000 > Nul");//ping 一次等1秒 不输出结果 6 sb.Append(" & DEL "");//删除文件 7 sb.Append(baseDirectory); 8 sb.Append("" /f /s /q"); 9 sb.Append(@" & cd..");//删除文件时会占用当前文件句柄?需要退出当前文件夹或者关闭当前文件夹,然后再调用rd删除文件夹。 10 sb.Append(string.Format("& rd /s /q "{0}"", baseDirectory)); 11 ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", sb.ToString()); 12 psi.WindowStyle = ProcessWindowStyle.Normal; 13 psi.CreateNoWindow = true; 14 Process.Start(psi); 15 Application.Current.Shutdown(); 16 }
关闭文件夹句柄?这个术语,或者操作方式欠缺。当时思路是如此。
另:
//删除有空格的路径,要为路径加上双引号。