当我尝试从一些64位Windows 7机器上的SysInternals启动进程监视器时,进程无法启动。 没有错误信息。 我双击,没有任何反应。 其他64位Windows 7电脑工作正常。 有任何想法吗?
这是我发现的。 在32位Procmon.exe中包含64位的exe文件作为二进制资源。 当32位exe文件启动时,它将64位版本提取到名为Procmon64.exe的隐藏文件中,然后执行该文件。 由于某些原因,此过程在某些Windows 7安装上失败。
我设法使用Visual Studio 2010提取64位的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,它似乎开始。