C++ ETW EnableTrace访问被拒绝

C++ ETW EnableTrace访问被拒绝,c++,access-denied,etw,C++,Access Denied,Etw,我想在实时中使用c(c++)代码记录Microsoft Windows内核网络提供程序中的一些事件 当我试图以非管理员身份执行程序时,它在EnableTrace(EnableTraceEx2)失败,代码为5(拒绝访问) 但是 但我可以使用性能监视器将提供程序添加到我的会话中(如果我只是在程序中创建,而不是停止并关闭它),而无需管理员权限 使用perfmon的步骤: //Create trace session without providers 1. StartTrace() // EVENT

我想在实时中使用c(c++)代码记录Microsoft Windows内核网络提供程序中的一些事件

当我试图以非管理员身份执行程序时,它在EnableTraceEnableTraceEx2)失败,代码为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失败:拒绝访问

  • 如何在没有管理员的情况下以编程方式添加(启用)提供程序。特权?

  • 为什么perfmon可以在不提升的情况下实现这一点


  • 内核提供程序的ETW跟踪始终需要管理员权限。某些收件箱工具在Win7中自动提升,因此您可能看不到perfmon正在与admin一起运行rights@magicandre1981谢谢你指点我!