MC.exe(メッセージコンパイラ)、rc.exe、link.exeによるEventMessageFileの.dllの生成

こんにちは、Habrの読者の皆さん。 この投稿は、Windowsイベントビューアー\アプリケーションとサービスログ\ uuuu(例として)にあるカスタムロガーに表示するために必要なメッセージを含む動的な.dllライブラリを作成するためのガイドです。







カスタムログでは、多くの場合、説明に次の内容が含まれるメッセージを見ることができます。







これは、yyyyイベントソースに必要なIDと説明のセットが含まれていないことを意味します。



この状況を修正するには、次のことが必要です。



1.次のパスでregeditを開きます:HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog、パーティションが存在することを確認します。



2. msdnを使用して、パラメーターを配置する必要があるeventMessage.txtを作成します必要なエンコードWindows-1251またはUnicodeで保存し、eventMessage.mcをフォーマットします。



注: eventMessageにIDと説明を入力する場合、常に説明の後に新しい行にドットを配置し、その後に新しい行にキャリッジを配置します。



例:



MessageId=0x1 SymbolicName=CAT_1 Language=English OutDescription for your application . MessageId=0x2
      
      





この機能を考慮しない場合、コンパイル中に予期しないエラーが発生する可能性があります。



3.管理者としてcmdを実行します。



4.次のコマンドを実行します:mc.exe -u C:\ SomeFolder \ eventMessage.mc -r C:\ SomeFolder \ result



:特定の場合、mc.exeはC:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x86



-u (Unicode)



形式の代わりに、 -A (W-1251 ANSI, )



使用できます-A (W-1251 ANSI, )



、および-r



オプションは、コンパイル後にファイルが保存される出力場所です。



コマンドを実行すると、CのバイナリファイルとeventMessage.rcファイルが作成されます。\ SomeFolder \ result



5.次のコマンドを実行します:rc.exe C:\ SomeFolder \ result \ eventMessage.rc



:rc.exeは、mc.exeと同じディレクトリにあります。



コンパイル後、eventMessage.resファイルが作成されます。これは、動的ライブラリを作成するために必要です。



6.次のコマンドを実行します:link.exe -dll -noentry /out:C:\SomeFolder\result\OurMessageSet.dll C:\ SomeFolder \ result \ eventMessage.res。



注:特定の場合、link.exeはC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\SDK\ScopeCppSDK\VC\bin







7.おめでとうございます待望のライブラリを作成しましたが、それだけではありません。 手順1からディレクトリのregeditに移動します。ディレクトリフィールドで、文字列パラメーター(文字列値)を作成し、EventMessageFileでこの作成に名前を付け、値にライブラリへのパスを示します:C:\ SomeFolder \ result \ OurMessageSet.dll 次のようになります。







レビューしたツール:mc.exe、rc.exe、link.exe。



力があなたと共にありますように。



All Articles