如何判断另一个进程是否为64位?

时间:2011-04-01 19:40:44

标签: c# process 64-bit

我有正在运行的应用程序的Process

如何判断(最好没有p /调用)该进程是否为64位?

4 个答案:

答案 0 :(得分:4)

您需要使用PInvoke IsWow64Process

答案 1 :(得分:4)

如果没有PInvoke,我认为没有100%明确的方法可以知道。

但是可以使用的一个项目是检查已加载模块的集合(Process.Modules)。如果主要模块(user32,kernel32等等)来自Wow64目录并且你正在运行64位机器,那么它很可能是32位进程。如果它们不是来自Wow64目录并且它是64位机器,那么它可能是64位进程。

再次不是决定性的,而是一个很好的估计。

答案 2 :(得分:0)

正如其他人所说,您可以使用IsWow64Process,这很容易实现here

答案 3 :(得分:-4)

很容易,如果进程在64位操作系统上运行,那么它就是64位进程。

最初为32位系统编写的代码可能在64位版本上运行,因为它可以在64位环境的内存限制内运行。但是,它不再受这些限制的约束,无论它是否旨在利用这一事实。因此,如果它在64位位机器上运行,则不会出现“32位进程”。

将它想象成一只被训练过使用隐形围栏保持在某个区域内的狗。如果围栏区域稍后扩展,您会发现一些聪明的狗会立即开始使用新区域。即使其他狗可能没有意识到这种变化,并继续在他们认为的界限内运作,但这并不意味着他们的局限性会与智慧型的局限性不同。