使用wevtutil安装WPT清单时出现问题

我试图将性能计数器和自定义事件添加到一个软件,以便我可以使用Windows Performance Toolkit程序(如XPerf和GPUView)查看这些程序。 我将竭尽全力克制自己的力量,对软件文档的状态发起一场激烈的咆哮,现在我浪费时间试图从网上取笑线索。 我将描述我如何到达现在的位置,以防万一这对其他迷失的灵魂有用。

到目前为止,我已经收集到我必须为我的性能计数器和事件编写事件清单。 您可以通过手动或使用名为“ ecmangen.exe ”的工具来完成此操作。 该程序的文档为事件创build清单提供了一个很好的一步一步的指南,但不解释如何将这些与您的代码集成。

就我而言,下一步就是使用两个神秘的命令行应用程序“ MC.exe ”和“ CTRPP.exe ”。 这些似乎分别生成C或C#头文件,源文件和资源文件,用于将事件和计数器检测添加到代码中。 接下来,你必须build立你的代码(查看'C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Samples \ winbase \ Eventing'中的示例),然后我们来到目前卡住的地方:正确使用下一个神秘工具“ wevtutil.exe

这个工具需要两件事情:你用它编译的二进制文件(exe或者DLL)和你用来生成这些资源的清单文件。 我遇到的麻烦是对二进制文件的位置非常挑剔,我一直无法确定这种挑剔的forms。 咒语和山羊牺牲没有结果。

如果清单文件中的'provider'标签的'resourceFileName'字段中定义了一个path,例如'c:\ MYDIR \ TEd.exe',那么就可以了。 但是,如果我把相同的exe文件放在一个不同的文件夹(失败的是C:\ tw \ TEd.exe),它会报错。

给出的错误信息是“警告:发布者TEd-Event-Provider资源不可访问”。 但没有更多的解释,为什么,或试图看看。

那么,我是否会以错误的方式添加检测工具,是否已经有了一个指导来解释所有的问题,以及“wevtutil.exe对目录名称的奇怪select性的性质是什么。

提前致谢,

蒂姆。

Solutions Collecting From Web of "使用wevtutil安装WPT清单时出现问题"

我刚刚听到同样的信息,为了解决这个问题而挣扎了一个小时,然后才有了脑波,并且读了错误信息:-)。

解决我的问题只是将“.rc”文件添加到我的项目,然后重新构建。 回头看,这是相当明显的,但它让我难住了一段时间。

希望这可以帮助。


编辑 – 2月4日好吧,不太清楚如果我知道你的问题是什么,但下面的批处理脚本是我做了这一切。 祝你好运。

rem ------------------------------------------------------------------- rem Do all of this from the project directory rem ------------------------------------------------------------------- rem Generate Header and Resource - remove the ReadOnly attrib to "help" it along attrib -r MymoduleeTracing.h mc.exe -um MymoduleeTracing.xml rem This generates MymoduleeTracing.h and MymoduleeTracing.rc, add both to your project rem ------------------------------------------------------------------- rem ** Now build the project ** rem ------------------------------------------------------------------- rem Register Mymodulee Tracing with the system if exist MymoduleeTracing.xml ( wevtutil um MymoduleeTracing.xml copy MymoduleeTracing.xml Release cd Release copy Mymodulee.dll %SystemRoot%\System32 wevtutil im MymoduleeTracing.xml ) rem ------------------------------------------------------------------- rem Do a capture, and also export the results to an XML file. xperf -start MymoduleeSession -on [REPLACE_WITH_YOUR_GUID] -f MymoduleeSession.etl xperf -on base -f coreel.etl rem Run the app, wait until exit, and then stop the capture start /wait Mymodulee.exe xperf -stop xperf -stop MymoduleeSession xperf -merge MymoduleeSession.etl coreel.etl MymoduleeSessionMerged.etl tracerpt MymoduleeSessionMerged.etl -o MymoduleeSessionMerged.xml -of XML 

我有同样的问题 – 我可以告诉,wevtutil有一个目录长度限制。 当我从一个较短路径的目录安装文件,它的工作。

如果有其他人遇到这种情况,你可以从任意目录中实际得到一些东西:

将USER读取和执行权限添加到包含或高于项目的目录:

icacls projectdir /grant BUILTIN\Users:(OI)(CI)(RX)

然后安装清单应该没有错误:

wevtutil im yourmanifest.man /rf: c:\ full \ path \ to \ yourprogram.exe /mf: c:\ full \ path \ to \ yourprogram.exe