有时候开发东西的时候,我们可能会让程序自己删除自己。如果纯粹的是.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文件如下:
点击删除按钮,SelfDeleteProgram.exe文件被成功删除:
本文章由创风网原创,转载请注明出处:http://www.windite.com/article/details/9t0p0c9