Я пытаюсь контролировать создание и прекращение любых процессов без прав администратора! я нашел много размещены примеры, как этот:Мониторинг создания и завершения процесса
// query every 2 seconds
string pol = "2";
WqlEventQuery queryString = new WqlEventQuery(
"SELECT *" +
" FROM __InstanceOperationEvent " +
"WITHIN " + pol +
" WHERE TargetInstance ISA 'Win32_Process' ");
// You could replace the dot by a machine name to watch to that machine
ManagementScope scope = new ManagementScope(@"\\.\root\CIMV2");
// create the watcher and start to listen
watcher = new ManagementEventWatcher(scope, queryString);
watcher.EventArrived += OnEventArrived;
watcher.Start();
Если бы я только получить событие я могу определить, если процесс был запущен или остановлен, но если я пытаюсь потреблять e.NewEvent.Property["ProcessName"].Value
в OnEventArrived
у меня проблемы с права доступа.
Мой вопрос: Почему я могу получить информацию о создании и завершении в целом, но если я хочу получить информацию из события, я ограничусь?
Я могу использовать Process.GetProcesses()
и сравнивать эту информацию с любыми предыдущими значениями, которые я получаю самостоятельно, поэтому я могу получить эту информацию в любом случае. Мне кажется, что мне не нужны права доступа.
Сценарий Powershell был бы значительным вариантом вместо C# для мониторинга процессов ... – JDavila
@JDavila да, если у вас нет клиента, который хотел бы увидеть небольшой зеленый знак в приложении для всех процессов, которые он хотел бы отслеживать;) – GreenEyedAndy