如何将'w3wp'进程名称转换为PID或用户名? (即 – “w3wp#29)

我正在Windows Server 2003 IIS6 Web服务器上运行一些perfmon计数器/报告,使每个网站都在其自己的应用程序池/工作进程用户下运行。

该报告提供了这些网站的名称,例如:

w3wp#29 w3wp#30 w3wp#31 w3wp#32 

我需要工作进程名称(或PID),以便我可以确定哪个网站与每个相关。

#29,#30,#31等号码不是PID,因为当我启用任务pipe理器中的PID视图,或者如果我启用Sysinternals Process Manager中的“命令行”列,或者使用iisapp.vbs脚本 – PID是更长的数字。

我一直没能find任何东西将上述过程转换成应用程序池用户名或至lessPID,所以我可以使用iisapp.vbs脚本交叉引用它到该网站。

我研究了这个,确实遇到了一个registry设置,可能会做我正在寻找,但除非没有其他方式我不想做registry更改:

 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PerfProc\Performance] "ProcessNameFormat"=dword:00000002 

有关如何查找或转换w3wp#XX进程到应用程序池用户名或PID的任何想法?

谢谢

要交叉引用,可以使用stream程计数器“IDstream程”。 将其包含在perf数据中,它将显示进程的PID。 对于一次性交叉引用来说,这很好,但这有点痛苦。

如果你能做到的话,我还是推荐registry的改变。 在我看来,registry的变化应该是任何基础构build的一部分。

这是一个博客文章,涵盖了相同的,并确认registry的变化: http : //weblogs.asp.net/owscott/archive/2007/03/19/registry-change-for-perfmon-and-pid-data.aspx

旧的凹凸,但你可以使用sysinternals工具PROCEXP,并添加“命令行”列来查看哪个池运行在哪个w3wp进程。