我有一个包含几个事件和两个通道的清单文件。 我通过mc命令生成包含和资源文件:
mc -um manifest.man
我将资源文件链接到应用程序中。
我通过wevtutil命令将清单安装在系统中
wevtutil.exe im manifest.man
在应用程序中,我将EventRegister用于初始化日志,并将EventWrite用于日志写入。 用于生成日志事件的下一个代码返回ERROR_SUCCESS: EVENT_DATA_DESCRIPTOR数据;
ULONG writeEvent(const std::string& message){
std::string log_message_str( message );
EVENT_DATA_DESCRIPTOR data;
EVENT_DESCRIPTOR description;
EventDataDescCreate( &data,message.c_str(),static_cast<ULONG>(log_message_str.size() + 1) );
return EventWrite(log_handle,&description,1,&data);
}
我还向我的LocalService应用程序授予读取权限:
icacls "service_win.exe" /grant "NT AUTHORITY\LocalService":R /Q
我使用“ NT AUTHORITY \ LocalService”帐户启动诸如服务之类的应用程序:
sc.exe create service_win binpath=D:\service_win.exe type=own obj='NT AUTHORITY\LocalService'
net start service_win
在我的manifest.man中声明的通道已添加到WinEvents日志中,但为空。 在应用程序中,我每秒通过writeEvent写入日志,并显示ERROR_SUCCESS结果,但是我的日志文件仍然为空。
更新:
我创建了github repo,其中包含复制步骤