如果你想使用代码的方式来判断一个32位的程序是否运行在一个64位的Windows系统上,你可以使用这个API: IsWow64Process。今天我们来仔细看看。

请不要轻易详细网上其他人的一些说法,将64位处理器的列表硬编码到你的程序中。

你可能会认为,在第一次修改64位处理器的硬编码列表(例如,将 x64 添加到 ia64 时)之后,人们会吸取教训。

但是,如何从 64 位进程中以编程的方式检测是否在 64 位 Windows 上运行? 那其实简单的。

为什么上面的代码直接返回了TRUE?

因为,你的 64 位程序正在运行这一事实意味着,你正在 64 位 Windows 上运行! 如果它是 32 位机器,程序将无法运行。

这就好比,你的程序问了这样一个问题,“电源打开了吗?” 如果没有电源,你的程序将无法提出问题。

当然了,如果你想要一个既可以编译为 32 位程序又可以编译为 64 位程序的源代码库,需要做的工作量很少。

如果你疯狂到仍然在编写 16 位 Windows 程序,我会为 16 位程序创建一个分支。

哈哈哈。

总结

此技法确实好用,我一直在用。虽然,目前TopomelBox只发布了32位版本,但每日构建我都会生成32位和64位版本。

所以,如果不幸地有一天,老大哥(Microsoft)决定完全废弃掉32位版本的支持,我也能很快的切换到64位版本上去。

猿友们,要未雨绸缪。

最后

Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。

本文来自:《How to detect programmatically whether you are running on 64-bit Windows》

推荐内容