如何识别32位进程

时间:2011-04-13 06:49:23

标签: c# .net 64-bit

我正在为审计应用程序编写一个C#插件,它需要获取在64位操作系统内运行的32位应用程序列表。此时我对如何识别32位进程感到困惑。

请帮帮我。

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

您可以使用IsWow64Process Windows API调用来确定进程是否在64位操作系统上以32位仿真运行。

以下是pinvoke link

更新:我对此进行了基准测试,结果如下:

  • 使用Process.GetProcesses()枚举所有流程需要花费大部分时间。我的笔记本电脑上运行了93个进程
  • 获取句柄并执行IsWow64Process调用大约需要。在同一台笔记本电脑上每个进程0.1ms。
  • 使用WMI获取所有进程大约需要。在同一台笔记本电脑上运行520毫秒(还有93个进程正在运行)。

基本上:如果您能够应对这样一个事实:在您获得列表之后以及在设法查询之前该过程可能会消失,那么使用pinvoke方式对我来说似乎比使用WMI更快更快捷。虽然WMI可能是较少侵入性的方式(从过程的角度来看)。