我如何知道处于运行状态的某个进程的位数。 (不是当前的..其中IntPtr.size是有用的)iswow64process()...只给出它是否是一个WoW64进程,但不输出32/64位..任何人都可以帮助..
答案 0 :(得分:4)
如果你知道你在64位窗口上运行,那么如果一个进程在WoW64模式下运行,那么它必须是32位(这就是WoW64的用途 - 在64位Windows上运行32位应用程序)如果没有,那么你可以假设64位。
来自MSDN:
WOW64是允许的x86模拟器 32位基于Windows的应用程序 在64位Windows上无缝运行。
同样来自here:
[IsWow64Process]指向设置为的值的指针 如果进程正在运行,则为TRUE WOW64。如果进程正在运行 32位Windows,该值设置为 假。如果进程是64位 应用程序在64位下运行 Windows,该值也设置为 FALSE。
答案 1 :(得分:3)
IsWow64Process
是正确的方法。在WOW64下运行仅适用于64位操作系统上的32位进程。
答案 2 :(得分:3)
真正的麻烦在于发现您在64位版本的Windows上运行。使用IntPtr.Size不够好,您的程序可能被迫以32位模式运行。您必须P / Invoke GetNativeSystemInfo()才能获得SYSTEM_INFO.wProcessorArchitecture。
注意这些P / Invokes中的异常,API函数在XP及更早版本中不可用。当您从IsWow64Process获得一个时,您将知道它是一个32位操作系统。您可以使用LoadLibrary和GetProcAddress来避免异常。