这是我的问题。确定应用程序运行的位体系结构的最佳方法是什么?
我想要做什么:在64位服务器上,我希望我的应用程序读取64位数据源(存储在reg密钥Software \ Wow6432Node \ ODBC \ ODBC.INI \ ODBC数据源中),如果它的32位我想要读取32位数据源,(即从Software \ ODBC \ ODBC.INI \ ODBC数据源读取)。
我可能会忽略这一点,但我不想关心我的应用程序运行的模式。我只是想知道操作系统是32位还是64位。
[System.Environment.OSVersion.Platform似乎并没有为我删除它。它在我的本地xp机器和win2k8 64位服务器上返回Win32NT(即使我的所有项目都设置为目标'任何cpu')]
答案 0 :(得分:4)
你通常不应该担心这一点。在64位平台上运行32位应用程序时,系统会自动将注册表查询重定向到Software\Wow6432Node
。
答案 1 :(得分:4)
尝试使用属性Environment.Is64BitOperatingSystem
。这是.Net 4.0中新增的一个,专门用于检查操作系统的类型。
答案 2 :(得分:4)
简单,安全,框架版本无关的解决方案,无需访问注册表:
Console.WriteLine(
"Is 64-bit? {0}",
(
System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == sizeof(Int64)
? "Yes"
: "No"
)
);
答案 3 :(得分:2)
您不应该直接阅读Wow6432Node。在作为64位应用程序运行时,使用RegistryView指定32位视图。
答案 4 :(得分:1)