MC.exe(消息编译器),rc.exe,link.exe为EventMessageFile生成.dll

下午好,尊敬的Habr读者。 这篇文章是创建动态.dll库的指南,该库包含在Windows事件查看器\应用程序和服务日志\ uuuu(作为示例)中的自定义记录器中显示所需的消息。



在自定义日志中,您通常可以看到其描述包含以下内容的消息:



这意味着yyyy事件源不包含ID和Description的必要集合。

为了纠正这种情况,有必要:

1.在以下路径中打开regedit:HKLM \ SYSTEM \ CurrentControlSet \ Services \ EventLog并确保您的分区存在。

2.创建eventMessage.txt,您需要在其中放置参数( 例如,使用msdn) ,并保存在必要的Windows-1251或Unicode编码中,格式为eventMessage.mc。

注意:当用您的ID和描述填充eventMessage时, 总是在描述之后,在新行上加一个点,然后将笔架放在新行上。

一个例子:

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, ) ,- -r选项是编译后将文件保存到的输出位置。

执行命令后,将创建以下内容:C:\ SomeFolder \ result中的二进制文件和eventMessage.rc文件

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/zh-CN426121/


All Articles