ETW EnableTrace Доступ запрещен

Я хочу регистрировать некоторые события из Microsoft-Windows-Kernel-сети провайдер, использующий код c (c ++) в реальное время.

Когда я пытаюсь выполнить программу не как администратор, она терпит неудачу в EnableTrace (EnableTraceEx2) с кодом 5 (доступ запрещен).

НО

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


Шаги с perfmon:

//Create trace session without providers
1. StartTrace() // EVENT_TRACE_REAL_TIME_MODE
2. OpenTrace()  // PROCESS_TRACE_MODE_REAL_TIME | PROCESS_TRACE_MODE_EVENT_RECORD

//Wait for events
3. ProcessTrace()

//Add provider manually
4. Open perfmon and add provider manually to my session.

Результат: программа начинает получать события!


меры без perfmon и admin. права:

//Create trace session without providers
1. StartTrace() // EVENT_TRACE_REAL_TIME_MODE
2. OpenTrace()  // PROCESS_TRACE_MODE_REAL_TIME | PROCESS_TRACE_MODE_EVENT_RECORD
3. EnableTraceEx2() //flag,keyword is 0, level is 0x00 or 0x04(Informational)
4. ProcessTrace()
OnError: ControlTrace() and CloseTrace() //EVENT_TRACE_CONTROL_STOP

Результат: ошибка на шаге 3: доступ запрещен

  1. Как я могу программно добавить (включить) провайдера без администратора. привилегии?

  2. Почему perfmon может сделать это без повышения?

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]