gpt4 book ai didi

c# - 这是确定操作系统架构的好方法吗?

转载 作者:可可西里 更新时间:2023-11-01 12:21:24 26 4
gpt4 key购买 nike

由于 WMI 类 Win32_OperatingSystem 在 Windows Vista 中只包含 OSArchitecture,我很快写了一个使用注册表来尝试判断当前系统是 32 位还是 64 位系统的方法。

private Boolean is64BitOperatingSystem()
{
RegistryKey localEnvironment = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");
String processorArchitecture = (String) localEnvironment.GetValue("PROCESSOR_ARCHITECTURE");

if (processorArchitecture.Equals("x86")) {
return false;
}
else {
return true;
}
}

到目前为止,它对我们来说效果很好,但我不确定我有多喜欢查看注册表。这是一个非常标准的做法还是有更好的方法?

编辑:哇,预览中的代码看起来漂亮多了。下次我会考虑链接到 pastebin 或其他东西。

最佳答案

看看 Raymond Chens 的解决方案:

How to detect programmatically whether you are running on 64-bit Windows

这是 .NET 的 PINVOKE:

IsWow64Process (kernel32)

更新:我对检查“x86”有异议。谁能说出英特尔或 AMD 的下一个 32 位处理器可能被指定为什么。概率很低,但风险很大。您应该要求操作系统通过正确的 API 来确定这一点,而不是通过查询可能被认为对外界不透明的操作系统版本/平台特定值。问自己这些问题,1 - MS 是否正确记录了相关的注册表项,2 - 如果是,他们是否提供了一个明确的可能值列表,保证允许您作为开发人员在您是否正在运行之间做出明智的决定32 位或 64 位。如果答案是否定的,那么调用 API,是的,它是一个但更冗长但它被记录在案并且是确定的。

关于c# - 这是确定操作系统架构的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com