1

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

    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”的文件位于“我的目录名称”[Like my code] 的目录中!它给出了一个错误,因为“Delete.exe”正在运行并且无法删除。

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

4

1 回答 1

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指定在下次启动时删除您的程序。

这些答案中的大多数都暗示正在运行的 EXE 是您自己的应用程序。如果不是,但 - #5 仍然有效。您可以安排在下次计算机启动时将其删除。

于 2013-06-30T22:26:27.073 回答