首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wevtutil安装WPT清单时出现问题

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

Stack Overflow用户
提问于 2011-01-13 11:17:31
回答 3查看 3.6K关注 0票数 4

我试图将性能计数器和自定义事件添加到软件中,以便我可以使用程序(如XPerf和GPUView )查看这些事件。我要用我所有的克制能力,避免对软件文档的状态和我现在浪费的试图从网络上取笑线索的时间进行宣泄。我要描述一下我是如何到达我现在的位置的,以防这对其他迷失的灵魂有用。

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

下一步,据我所知,是使用两个神秘的命令行应用程序'MC.exe‘和'CTRPP.exe’。它们似乎生成C或C#头文件、源文件和资源文件,分别用于向代码中添加事件和计数器检测。接下来,您必须构建您的代码(查看'C:\Program \Microsoft\Windows\v7.1\Sample\winbase\Eventing‘中的示例),然后我们将讨论我目前遇到的问题:正确使用下一个神秘工具'wevtutil.exe

这个工具需要两样东西:用这些资源编译的二进制文件(exe或DLL)和用来生成这些资源的清单文件。我遇到的麻烦是,对于二进制文件的位置非常挑剔,而且我无法确定这种挑剔的形式。咒语和山羊祭祀没有结果。

如果我在清单文件中的'provider‘标记的'resourceFileName’字段中定义了一个路径,比如'c:\MYDIR\TEd.exe‘,那么它就可以了。但是,如果我将相同的exe放在另一个文件夹中(失败的一个是C:\tw\TEd.exe),它就会发出抱怨。

给出的错误信息是的警告:发布者tried资源是不可访问的。,但没有解释原因,也没有解释它试图查找的位置。

那么,我是否要以错误的方式添加工具,是否已经有一个指南来解释所有的问题,以及‘wevtutil.exe’对目录名称的奇怪选择的本质。

提前谢谢你,

蒂姆。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-25 16:40:47

我刚刚收到了完全相同的消息,在我进行脑电波并读取错误信息之前,挣扎了一个小时来解决它;-)。

我的问题的解决方案就是将".rc“文件添加到我的项目中,然后重新构建。回头看,这是相当明显的,但它使我困惑了一段时间。

希望这能有所帮助。

编辑-2月4日确定,不太确定我是否知道您的问题是什么,但下面的批处理脚本是如何做到这一点的。祝好运。

代码语言:javascript
复制
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 MyModuleTracing.h
mc.exe -um MyModuleTracing.xml
rem This generates MyModuleTracing.h and MyModuleTracing.rc, add both to your project

rem -------------------------------------------------------------------
rem ** Now build the project **
rem -------------------------------------------------------------------

rem Register MyModule Tracing with the system
if exist MyModuleTracing.xml (
  wevtutil um MyModuleTracing.xml

  copy MyModuleTracing.xml Release
  cd Release
  copy MyModule.dll %SystemRoot%\System32
  wevtutil im MyModuleTracing.xml
)

rem -------------------------------------------------------------------
rem Do a capture, and also export the results to an XML file.
xperf -start MyModuleSession -on [REPLACE_WITH_YOUR_GUID] -f MyModuleSession.etl
xperf -on base -f Kernel.etl

rem Run the app, wait until exit, and then stop the capture
start /wait MyModule.exe

xperf -stop
xperf -stop MyModuleSession
xperf -merge MyModuleSession.etl Kernel.etl MyModuleSessionMerged.etl

tracerpt MyModuleSessionMerged.etl -o MyModuleSessionMerged.xml -of XML
票数 1
EN

Stack Overflow用户

发布于 2011-08-25 15:34:22

我也遇到了同样的问题--据我所知,wevtutil上有目录长度限制。当我从路径较短的目录中安装该文件时,它正常工作。

票数 1
EN

Stack Overflow用户

发布于 2014-12-03 22:13:35

如果其他人遇到这种情况,您实际上可以在任意目录下工作:

将用户读取和执行特权添加到包含或高于项目的目录中:

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

那么安装清单时应该没有错误:

/rf:c:\full\path\to\yourprogram.exe /mf:c:\full\path\to\yourprogram.exe

wevtutil im yourmanifest.man yourmanifest.man

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4679445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档