Delphi 如何检测32/64平台?

Delphi 如何检测32/64平台?,delphi,32bit-64bit,delphi-xe7,Delphi,32bit 64bit,Delphi Xe7,我需要检测应用程序是否在Win32/64上运行 更新:正在报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键不是一个好主意 您在问题中提供的代码有一些瑕疵,但它确实正常工作。我怀疑您实际上并没有运行该代码,并且犯了一个错误,并以某种方式发布了错误的代码 FWIW,您应该使用fromSystem.SysUtils检查底层平台的比特率。属性将告诉您底层平台是32位还是64位。这段代码非常粗糙LoadLibrary返回一个HMODULE

我需要检测应用程序是否在Win32/64上运行


更新:正在报告依赖[HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0]键不是一个好主意

您在问题中提供的代码有一些瑕疵,但它确实正常工作。我怀疑您实际上并没有运行该代码,并且犯了一个错误,并以某种方式发布了错误的代码


FWIW,您应该使用from
System.SysUtils
检查底层平台的比特率。属性将告诉您底层平台是32位还是64位。

这段代码非常粗糙
LoadLibrary
返回一个
HMODULE
GetModuleHandle('kernel32')
LoadLibrary
更好。狡猾地使用
@
。无意义地初始化
vIsWow64
。似乎很难相信
IsWow64Process
会在32位操作系统上返回
True
。@TLama问题中的代码调用
IsWow64Process
。它不仅仅检测函数是否被导出,我无法复制。在我的32位xp系统上,您的函数及其折痕返回false。注意,我添加了诊断来证明它到达了对
IsWow64Process
的调用,并且该调用成功(返回true)。我发现很难相信
IsWow64Process
不起作用。主要是我希望您在继续编写代码之前注意
TOSVersion.Architecture
。您可以删除问题中的代码,只需使用
TOSVersion.Architecture
@user246408 Serg,您为此关闭的DUP询问D2007,而这将排除
TOSVersion
答案。这里的问题是XE7。考虑到
GetVersionEx
的谎言,即使现在这也很难做到!不过,
TOSVersion
确实给了您版本号和名称,所以我想这是一个很好的方法,将
GetVersionEx
模块化。