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。

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

Source: https://habr.com/ru/post/J426121/


All Articles