本程序来自CSDN中的另一个删除自身的程序,对其进行了修改,在VS2008中实现。
增加一个DELETEME函数,并重写ONCLOSING事件,让其在退出的时候自动调用删除自身的函数,具体代码如下。
private void Deleteme()
{
using( StreamWriter sw = new StreamWriter(Application.StartupPath+"//killme.bat",false,Encoding.Default))
{
for (int i = 0; i < 10; i++) //增加10条不正确的DOS命令,以等待程序的完全退出,值可以取大一点,否则不一定能删除。
{
sw.WriteLine("------ "); //
}
sw.WriteLine(string.Format(" del /"{0}/" /q", Application.ExecutablePath)); //删除程序自身
sw.WriteLine(string.Format("del /"{0}/" /q", Application.StartupPath + "//killme.bat"));//删除批处理自身
sw.Close();
}
ProcessStartInfo ps = new ProcessStartInfo(Application.StartupPath + "//killme.bat");
ps.WindowStyle = ProcessWindowStyle.Hidden;
ps.CreateNoWindow = true;
Application.Exit();//退出应用程序
Process.Start(ps);//执行批处理执行删除操作。
}
protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);
if (MessageBox.Show("您确定要退出?", "操作提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2) == DialogResult.No)
{
e.Cancel = true;
}
else Deleteme();
}
本文介绍了一种使用C#实现程序自我删除的方法。通过创建一个包含删除指令的bat文件并利用进程启动来完成程序及bat文件自身的删除,同时演示了如何通过重写窗口关闭事件来触发此功能。

604

被折叠的 条评论
为什么被折叠?



