有没有办法写入C中的Windows事件日志?

sim*_*mon 8 c windows event-log

我需要修改用win32 C(不是c ++)编写的简单Windows服务.

是否有一个库可以用来将事件日志条目写入Windows事件日志而不使用eventcreate.exe?或者我是否必须将其修改为编译为c ++程序?

emb*_*oss 14

是的,请参阅ReportEvent函数及其示例.

扩展名为.mc的事件提供程序源文件如下所示:

; // MyEventProvider.mc 
; // This is the header section.
   SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
               Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
               Warning=0x2:STATUS_SEVERITY_WARNING
               Error=0x3:STATUS_SEVERITY_ERROR
              )
   FacilityNames=(System=0x0:FACILITY_SYSTEM
               Runtime=0x2:FACILITY_RUNTIME
               Stubs=0x3:FACILITY_STUBS
               Io=0x4:FACILITY_IO_ERROR_CODE
              )
   LanguageNames=(English=0x409:MSG00409)
; // The following are the categories of events.
   MessageIdTypedef=WORD
   MessageId=0x1
   SymbolicName=NETWORK_CATEGORY
   Language=English
   Network Events
   ... rest of file omitted
Run Code Online (Sandbox Code Playgroud)

.mc文件被编译成.res文件,该文件链接到.dll:

要编译消息文本文件,请使用以下命令:

 mc -U provider.mc
Run Code Online (Sandbox Code Playgroud)

要编译消息编译器生成的资源,请使用以下命令:

rc provider.rc
Run Code Online (Sandbox Code Playgroud)

若要创建包含消息表字符串资源的仅资源DLL,请使用以下命令(可以从Visual Studio命令提示符运行该命令):

   link -dll -noentry provider.res
Run Code Online (Sandbox Code Playgroud)

...