Jer*_*ett 18 c# windows registry
由于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;
}
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,它对我们来说非常好,但我不确定我有多喜欢浏览注册表.这是一个非常标准的做法还是有更好的方法?
编辑:哇,在预览中,该代码看起来更漂亮.下次我会考虑连接到pastebin或其他东西.
看看Raymond Chens解决方案:
这是针对.NET的PINVOKE:
更新:我在检查'x86'时会遇到问题.谁能说出英特尔或AMD的下一代32位处理器可能被指定为什么.概率很低但风险很大.您应该要求操作系统通过正确的API确定这一点,而不是通过查询可能被视为对外界不透明的操作系统版本/平台特定值.问问自己问题,1 - 是MS正确记录的注册表项,2 - 如果是,它们提供了可能值的确定列表,保证允许您作为开发人员在您是否正在运行之间做出明智的决定32位或64位.如果答案是否定的,那么请调用API,是的,这是一个但更长的啰嗦,但它是有记录和确定的.
归档时间: |
|
查看次数: |
4945 次 |
最近记录: |