【问题标题】:Show all processes in an AnyCPU application显示 AnyCPU 应用程序中的所有进程
【发布时间】:2011-09-05 20:15:26
【问题描述】:

我正在为任何 CPU 编写应用程序。当我在 64 位 PC 上运行以下命令时,它将不起作用:

System.Diagnostics.Process[] running = System.Diagnostics.Process.GetProcesses();
for (int i = 0; i < running.Length; i++){
    try{
        Console.WriteLine(running[i].MainModule.FileName);
    }
    catch (Exception ex){}
}

它只显示阵列中正在运行的 32 位进程,因为它是在 32 位模式下运行的。有解决办法吗?

【问题讨论】:

  • 我觉得这很难相信
  • 我得到了答案:running[i].MainModule.FileName 不受 64 位进程的支持。这就是我的代码总是抛出异常的原因。所以没有列出 64 位进程。
  • @Brik:在答案中附上,我们可以 +1,你可以接受它(在 24 小时内)!
  • 这会教你不要吞下异常! ;-)
  • 使用 System.Management,Win32_Process WMI 类。

标签: c# process 32bit-64bit


【解决方案1】:

我得到了答案:

running[i].MainModule.FileName

64 位进程不支持。这就是我的代码总是抛出异常的原因。所以没有列出 64 位进程。

【讨论】:

    【解决方案2】:

    您是否有可能访问过时的字段?

    http://msdn.microsoft.com/en-us/netframework/aa569609

    【讨论】:

    • 这与他的问题无关。
    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多