Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MC.exe编译清单文件?_C#_Winapi_Event Log - Fatal编程技术网

C# 如何使用MC.exe编译清单文件?

C# 如何使用MC.exe编译清单文件?,c#,winapi,event-log,C#,Winapi,Event Log,我想在我的c#应用程序中使用Windows事件日志,所以我正在尝试创建一个事件提供程序。我已经编写了xml清单文件,但是我不知道如何编译它来生成资源定义文件和C代码文件。我知道我必须使用MessageCompiler(MC.exe),而且我已经安装了Windows SDK。有人能告诉我如何进行吗 这是该网站的msdn链接 我做了一次搜索,找到了这篇解释使用mc.exe记录事件的文章。 希望这能有所帮助。(您好,从2021年2月开始!) 微软最近改变了mc.exe的工作方式 此外,在“程序员事

我想在我的c#应用程序中使用Windows事件日志,所以我正在尝试创建一个事件提供程序。我已经编写了xml清单文件,但是我不知道如何编译它来生成资源定义文件和C代码文件。我知道我必须使用MessageCompiler(MC.exe),而且我已经安装了Windows SDK。有人能告诉我如何进行吗

这是该网站的msdn链接
我做了一次搜索,找到了这篇解释使用mc.exe记录事件的文章。
希望这能有所帮助。

(您好,从2021年2月开始!)

  • 微软最近改变了mc.exe的工作方式

  • 此外,在“程序员事件指南”*.docx文件(2010年12月17日)中记录的
    ecmangen.exe
    (“清单生成器”)GUI程序没有替换

    • 微软的官方建议是下载最新版本的Windows10SDK,其中包括
      ecmangen.exe
      。。。令人恼火的是,MSFT的回复并没有具体说明应该使用哪个SDK,只是用“Windows10CreatorsEdition”这个名称(非常模糊)来指代它。
      • (他们称之为“创作者版”让我非常恼火,因为它听起来像是一个独立的SKU,就像家庭版和专业版一样)
      • 原来他们指的是Windows 10 SDK 10.0.15063.468,您可以从中下载
      • “秋季创建者更新”(版本为10.0.16299.91)的Windows 10 SDK中不包含该版本
  • <> > > P> >获得<代码> EcMang.exe <代码>的“Windows SDK用于桌面C++ x86应用程序”和“桌面SDC++桌面AM+64应用程序”(您应该同时安装)。
  • 安装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”
      • (是的,x64二进制文件位于x86程序文件目录下;是的,这很奇怪)

现在,如果要运行命令
mc-s EventLogMsgs.mc
来构建消息,那么这是不正确的

相反,请执行以下操作:

  • 确保来自
    ecmangen.exe
    的清单文件有效(假设它名为“manifest.man”)
  • 打开Visual Studio Developer命令行提示窗口
    • 自Windows 7.1 SDK以来,SDK不再在“开始”菜单中包含其命令提示符快捷方式,因此请改为执行此操作,因此暂时将其添加到您的
      路径中,如下所示:
      
    • “C:\Program Files(x86)\Windows Kits\10\bin\10.0.15063.0\x64”
      复制到剪贴板(包括双引号)-或任何实际安装路径
    • 打开
      cmd.exe
      (或者先打开PowerShell,然后运行
      cmd
    • 在不按Enter键的情况下键入此项:
      SET PATH=%PATH%
    • 粘贴步骤1中的路径(通常只需单击鼠标右键或Shift+Insert键)。
      • 所以你有
        设置路径=%PATH%;“C:\ProgramFiles(x86)\Windows工具包\10\bin\10.0.15063.0\x64”
    • 然后按回车键
    • cd%HOMEPATH%
    • mc.exe-?
      现在应该可以工作了
  • 在与步骤2相同的开发人员命令提示符中,
    cd
    到包含
    manifest.man
    messages.mc
    文件的目录
  • 然后运行
    mc.exe messages.mc
    ,它就可以正常工作了
    • 您现在应该可以看到
      manifest.h
      manifest.rc
      (以及一些
      .bin
      TEMP.bin
      文件…)输出到同一目录中

  • 你可以找到一个网络搜索的例子你能给我举一个例子吗?我想知道如何使用MC.exe,但我找不到任何关于它的信息。我会通过网络搜索来做到这一点。