进程监视器无法在64位计算机上启动

当我尝试从一些64位Windows 7机器上的SysInternals启动进程监视器时,进程无法启动。 没有错误信息。 我双击,没有任何反应。 其他64位Windows 7电脑工作正常。 有任何想法吗?

这是我发现的。 在32位Procmon.exe中包含64位的exe文件作为二进制资源。 当32位exe文件启动时,它将64位版本提取到名为Procmon64.exe的隐藏文件中,然后执行该文件。 由于某些原因,此过程在某些Windows 7安装上失败。

我设法使用Visual Studio 2010提取64位的exe文件。

  1. 打开Visual Studio并使用File-> Open-> File …菜单打开Procmon.exe文件
  2. 在资源树中,展开“BINRES”节点
  3. 用鼠标右键单击1308节点,然后select导出…
  4. 命名导出的资源Procmon-64.exe并保存
  5. 运行解压缩的exe文件

不要命名解压缩的exe文件Procmon64.exe(无连字符),因为32位的Procmon会尝试删除它,如果有机会的话。

如果你没有Visual Studio,可以使用一个Windows可执行资源提取程序,例如ResourcesExtract – http://www.nirsoft.net/utils/resources_extract.html

我来帮你打开思路。 procmon.exe需要运行Workstation服务才能启动。 它用它来枚举一些东西,没有它就会默默地死去。

这是没有logging在任何地方和相当虚假。

我知道这个线程已经有一段时间了,但我最近才看到这个问题,我注意到另一个可能有用的因素。 pipe理员权限。 如果我作为pipe理员login并运行它,它工作正常。 如果以非pipe理员身份login并运行,问题就会发生,提取的procmon-64将显示相同的问题。

我成功地提取了ProcMon64.exe,并在临时文件夹中放置并执行了下一个Perl脚本。

 use File::Copy; if(fork()==0) { system "C:\\SysInternals\\ProcMon.exe"} else { for($i=1;$i<1000;$i++) {if(-e 'ProcMon64.exe') { copy('ProcMon64.exe',$i.'.exe')} } } 

经过多次执行后,它创build了几十个copes,都是相同的(相同的CRC32)

ospy是一个ProcMon替代品。 你可以尝试解决procmon的启动。

我通过重新检查我的环境variables来解决这个问题。 你可以检查%TEMP% ,看看你以前是否添加过内容。 删除Windows temp以外的任何其他文件夹,然后重新启动。

我使用资源黑客。 提取1038作为bin。 添加.exe,它似乎开始。