C#:如何检测其他进程的比特率。。。不是现在的

C#:如何检测其他进程的比特率。。。不是现在的,c#,process,32bit-64bit,C#,Process,32bit 64bit,如何知道处于运行状态的某个进程的比特数。(不是当前的..其中IntPtr.size很有用)iswow64process()。。。仅给出它是否为WoW64进程,但不输出32/64位。。如果您知道您正在64位windows上运行,那么如果它是在WoW64模式下运行的进程,那么它必须是32位的(这就是WoW64的用途-在64位windows上运行32位应用程序),如果不是,那么您可以假定为64位 发件人: WOW64是x86仿真器,它允许 基于Windows的32位应用程序 在64位Windows上无

如何知道处于运行状态的某个进程的比特数。(不是当前的..其中IntPtr.size很有用)iswow64process()。。。仅给出它是否为WoW64进程,但不输出32/64位。。如果您知道您正在64位windows上运行,那么如果它是在WoW64模式下运行的进程,那么它必须是32位的(这就是WoW64的用途-在64位windows上运行32位应用程序),如果不是,那么您可以假定为64位

发件人:

WOW64是x86仿真器,它允许 基于Windows的32位应用程序 在64位Windows上无缝运行

也来自:

[IsWow64Process]指向设置为的值的指针 如果进程在以下环境下运行,则为TRUE WOW64。如果进程正在 32位窗口,该值设置为 错。如果进程是64位的 在64位下运行的应用程序 在Windows中,该值也设置为 错


如果您知道您正在64位windows上运行,那么如果它是在WoW64模式下运行的进程,那么它必须是32位的(这就是WoW64的用途-在64位windows上运行32位应用程序),如果不是,那么您可以假定为64位

发件人:

WOW64是x86仿真器,它允许 基于Windows的32位应用程序 在64位Windows上无缝运行

也来自:

[IsWow64Process]指向设置为的值的指针 如果进程在以下环境下运行,则为TRUE WOW64。如果进程正在 32位窗口,该值设置为 错。如果进程是64位的 在64位下运行的应用程序 在Windows中,该值也设置为 错


这是正确的方法。在WOW64下运行仅适用于64位操作系统上的32位进程。

是正确的方法。在WOW64下运行仅适用于64位操作系统上的32位进程。

真正的问题是发现您正在64位版本的Windows上运行。使用IntPtr.Size不够好,您的程序可能被迫以32位模式运行。您必须P/调用GetNativeSystemInfo()来获取SYSTEM_INFO.wProcessorArchitecture


注意这些p/invoke的异常,在XP和更早的版本中API函数不可用。当您从IsWow64Process获得一个时,您将知道它是一个32位操作系统。您可以使用LoadLibrary和GetProcAddress避免异常。

真正的问题是发现您运行的是64位版本的Windows。使用IntPtr.Size不够好,您的程序可能被迫以32位模式运行。您必须P/调用GetNativeSystemInfo()来获取SYSTEM_INFO.wProcessorArchitecture


注意这些p/invoke的异常,在XP和更早的版本中API函数不可用。当您从IsWow64Process获得一个时,您将知道它是一个32位操作系统。您可以避免LoadLibrary和GetProcAddress出现异常。

自.NET 4以来,有一种更简单的方法可以做到这一点:自.NET 4以来,有一种更简单的方法可以做到这一点:因此,对我来说,适用的完整条件是:
var is32=!Environment.is64位操作系统| |(isWow64进程(process.Handle,out变量isWow64)和&isWow64)所以对我有效的完整条件是:
var为32=!Environment.is64位操作系统| |(isWow64进程(process.Handle,out变量isWow64)和&isWow64)