2011-07-04 24 views
8

私は、win32 C(C++ではなく)で書かれた簡単なWindowsサービスを変更する必要があります。CのWindowsイベントログに書き込む方法はありますか?

eventcreate.exeを使用せずにWindowsイベントログにイベントログエントリを書き込むためのライブラリがありますか?それとも、C++プログラムとしてコンパイルするためにそれを変更する必要がありますか?

+0

これをプログラムで実行するには、[ここ](http://msdn.microsoft.com/en-us/library/dd996928(v=vs.85).aspx)から開始することをお勧めします。 – Jon

答えて

14

はい、機能ReportEventとそのexampleを参照してください。コンパイルするには

:の.mcファイルが.dllファイルにリンクされます.RESファイルにコンパイルされ

; // 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拡張子を持つイベントプロバイダのソースファイルは、次のようになりますメッセージ・テキスト・ファイルには、次のコマンドを使用します。メッセージコンパイラが生成されたリソースをコンパイルするには

mc -U provider.mc 

を、次のコマンドを使用します。

rc provider.rc 
がメッセージテーブルの文字列リソースを含むリソースのみのDLLを作成するには、次のコマンドを使用します(あなたは、Visual Studioコマンドプロンプトからコマンドを実行することができます):

link -dll -noentry provider.res 

...

関連する問題