删除在C#控制台中运行的程序

时间:2013-06-30 22:20:44

标签: c# console

我创建了一个删除文件夹的程序。 像这样:

    if (Directory.Exists((System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "My Dir Name"))))
    {
        Directory.Delete(System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "My Dir Name"), true);
    }

这没关系。但是文件的名称是" Delete.exe"在我的目录名称"目录中。 [像我的代码]!它给出了一个错误,因为" Delete.exe"正在运行,无法删除。

我该怎么做才能删除" Delete.exe"?

1 个答案:

答案 0 :(得分:1)

您是否正在尝试删除正在运行的应用程序所在的文件夹,因此会删除该程序本身?嗯,你有几个选择。有趣的是,批处理文件可以自行删除。所以,这也为您提供了更多选择:

  1. 让您的C#程序在删除文件夹之前将自身复制到临时目录,然后从那里运行。
  2. 完全使用批处理文件而不是C# - 让它做任何事情,然后自行删除。
  3. 让您的C#程序生成并执行批处理文件,然后退出 - 在C#程序退出后将批处理文件清理干净。
  4. 运行CLI命令以在指定时间后删除您的程序:
    • Process.Start("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del " + Application.ExecutablePath);
  5. 您可以使用MovFileEx指定在下次启动时删除您的程序。
  6. 这些答案中的大部分意味着正在运行的EXE是您自己的应用程序。如果不是,那么 - #5仍然有用。您可以安排在下次计算机启动时将其删除。