我不知道我在做什么错,但是我试图在二进制文件不运行时删除它,但是如果它正在运行,则会显示一个消息框,告诉用户在删除程序之前先关闭程序。当我尝试执行此操作时,它会忽略消息框并尝试在运行时删除该文件,显然您不能这样做,因此Visual Studio会以以下方式返回:


  'System.UnauthorizedAccessException:'拒绝访问路径'C:\ cmctemp \ lcpol \ lcweb.exe'。


不知道为什么它不显示消息框。

private void button5_Click(object sender, EventArgs e)
{
    Process[] pname = Process.GetProcessesByName("lcweb.exe");
    if (pname.Length == 0)
        if (File.Exists(@"C:\cmctemp\lcpol\lcweb.exe"))
            File.Delete(@"C:\cmctemp\lcpol\lcweb.exe");
        else
            MessageBox.Show("Please close the program before deleting!", "Information");
}

最佳答案

尝试这样做:

  private void button5_Click(object sender, EventArgs e)
  {
        Process[] pname = Process.GetProcessesByName("lcweb");
        if (pname.Length == 0 && File.Exists(@"C:\cmctemp\lcpol\lcweb.exe"))
            File.Delete(@"C:\cmctemp\lcpol\lcweb.exe");
        else
            MessageBox.Show("Please close the program before deleting!", "Information");
  }

第一个更改是从GetProcessesByName中删除“ .exe”,第二个更改是调整if语句。
希望对您有所帮助。

10-07 17:16