Получить путь процесса под другим пользователем - PullRequest
4 голосов
/ 18 июля 2011

Я пишу программу, которая проверяет процессы (при их запуске) и убивает все процессы, которые не являются приемлемыми.

Моя программа в основном выполнена, но я только что столкнулся с проблемой: когда я пытаюсь получить путь (один из критериев) процесса, выполняющегося под другим пользователем (MainModule.FileName), я получаю исключение:

System.ComponentModel.Win32Exception occurred
  ErrorCode=-2147467259
  Message="Access is denied"
  NativeErrorCode=5
  Source="System"
  StackTrace:
       at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)    at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)    at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)    at System.Diagnostics.Process.get_MainModule()    at Forcep.Logic.ProcessStarted(Object sender, EventArrivedEventArgs e) in J:\Variable\Programming\Forcep\Forcep\Logic.vb:line 126

Теперь программа, выполняющая проверку, работает с полными правами администратора, поэтому я могу в значительной степени изменить любое необходимое мне разрешение.

Как мне узнать путь процесса? (Кстати, я могу использовать WMI, я уже использовал его для другой части этого).

Ответы [ 2 ]

0 голосов
/ 09 января 2012

Решение состоит в том, чтобы клиентское приложение работало под соответствующим пользователем и использовало это клиентское приложение для запроса пути и т. Д.

0 голосов
/ 24 декабря 2011

Программа, выполняющая проверку, работает с полными правами администратора

Я предполагаю, что вы имеете в виду «администратора с повышенными правами» в Vista или Windows 7 с включенным контролем учетных записей. Для этого щелкните правой кнопкой мыши исполняемый файл и выберите «Запуск от имени администратора».

Я пробовал это в моей системе Windows 7, и единственный процесс, который не удался таким образом для MainModule, был audiodg. Я думаю, что этот процесс защищен для обеспечения безопасности цифровых прав на аудио. Вам следует перехватить это исключение, если вы просматриваете все процессы.

(Если это не отвечает на ваш вопрос, рассмотрите возможность использования Process Explorer , чтобы изучить процесс, который вызывает у вас проблемы. Щелкните правой кнопкой мыши Process Explorer, чтобы запустить его с повышенными правами. Откройте свойства и перейдите на вкладку Безопасность, кнопка Разрешения. Сравните список контроля доступа с процессом, который вы можете успешно запросить.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...