我想在我的c#应用程序中使用Windows事件日志,所以我正在尝试创建一个事件提供程序。我已经编写了xml清单文件,但我不知道如何编译它来生成资源定义文件和C#代码文件。我知道我必须使用MessageCompiler(MC.exe)并且我已经安装了Windows SDK。有人可以给我关于如何进行的说明吗?
答案 0 :(得分:2)
答案 1 :(得分:1)
(2021 年 2 月你好!)
Microsoft 最近更改了 mc.exe
的工作方式。
此外,ecmangen.exe
(“Manifest Generator”)GUI 程序记录在“Programmers Guide to Eventing”*.docx 文件(日期为 2010 年 12 月 17 日)is no-longer included in the Windows 10 SDK 无需更换。
ecmangen.exe
... 令人讨厌的是 MSFT 的回复没有指定确切地应该使用哪个 SDK,参考它只是(非常含糊不清)名称“Windows 10 Creators Edition”。
获得 ecmangen.exe
的最小安装选项是“适用于桌面 C++ x86 应用的 Windows SDK”和“适用于桌面 C++ amd64 应用的 Windows SDK”(您应该同时安装两者)。
安装 Windows 10 SDK 版本 10.0.15063.468 后,您会在以下位置找到 ecmangen.exe
:
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\ecmangen.exe"
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\ecmangen.exe"
现在,The documentation in the .NET example of using custom messages 说要运行命令 mc -s EventLogMsgs.mc
来构建消息,但是这是不正确的。
改为这样做:
ecmangen.exe
的清单文件有效(假设它名为“manifest.man”)。PATH
中,如下所示:
"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64"
复制到剪贴板(包括双引号) - 或者您的实际安装路径。cmd.exe
(或先打开 PowerShell,然后运行 cmd
)SET PATH=%PATH%;
SET PATH=%PATH%;"C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64"
cd %HOMEPATH%
mc.exe -?
现在应该可以工作了。cd
到包含您的 manifest.man
和 messages.mc
文件的目录。mc.exe messages.mc
,它应该正常工作
manifest.h
和 manifest.rc
(以及一些 .bin
和 TEMP.bin
文件...)输出。