2011-07-04 88 views
8

我有一个需要修改在win32 C(不是C++)中编写的简单的Windows服务。有没有办法写入C中的Windows事件日志?

是否有一个库,我可以用它来写事件日志条目到Windows事件日志,而无需使用eventcreate.exe?或者我必须修改它作为C++程序编译?

+0

为了以编程方式执行此操作,您可能需要从[here](http://msdn.microsoft.com/zh-cn/library/dd996928(v = vs.85).aspx)开始。 – Jon

回答

14

是的,请参见功能ReportEvent及其example

用的.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 

的.mc文件被编译成链接到一个.dll一个res文件:

要编译消息文本文件中,使用下面的命令:

mc -U provider.mc 

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

rc provider.rc 

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

link -dll -noentry provider.res 

...

相关问题