#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» одна папка правильная, а вторая-из другой, она убьет только первую.