Доступ запрещен, когда я пытаюсь убить процесс с определенным местоположением, который запускается от имени администратора C#

#c#

Вопрос:

У меня проблема с уничтожением exe — файла с определенным местоположением, который запускается от имени администратора. Вот код, который я использую:

  const string PROCESSNAME = "test";
 string targetProcessPath = @Path.Combine(myFolder, "test.exe");
 Process[] collectionOfProcess = Process.GetProcessesByName(PROCESSNAME);
 if (collectionOfProcess.Length >= 1)
 {
      Process process = collectionOfProcess[0];
      string processPath = process.MainModule.FileName;
      if (processPath == targetProcessPath)
           process.Kill();
}
 

Проблема в том, что он отлично работает, когда я бегу test.exe обычно, но «доступ запрещен», когда я запускаю его от имени администратора. Я также пытался запустить свою программу от имени администратора, но она по-прежнему выдает исключение «отказано в доступе». Какая-нибудь помощь в том, как этого добиться?

Комментарии:

1. Вы проверили, все ли в порядке: processPath == targetProcessPath ?

2. Может быть, это лучший способ сделать эту проверку: String.Compare(processPath,targetProcessPath,true)==0

3. @Luuk спасибо за ваш ответ, но код, который вы рекомендовали, по-прежнему вызывает отказ в доступе. Только когда я запускаю test.exe однако от имени администратора (моя программа также запускается от имени администратора).

4. Вывод: вам не разрешен доступ process.MainModule.FileName к процессу, запущенному под управлением администратора, в то время как вы сами не являетесь администратором. (Но process.Kill() все еще работает, но тогда вы не будете знать, правильно ли вы убили процесс…..)

5. Это убьет правильный процесс, если я запущу два «test.exe» одна папка правильная, а вторая-из другой, она убьет только первую.