Я пишу программу, которая проверяет процессы (при их запуске) и убивает все процессы, которые не являются приемлемыми.
Моя программа в основном выполнена, но я только что столкнулся с проблемой: когда я пытаюсь получить путь (один из критериев) процесса, выполняющегося под другим пользователем (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, я уже использовал его для другой части этого).