繁体   English   中英

如何使用 C# 获取运行代码的操作系统的名称?

[英]How to get the name of OS in which the code is running using C#?

我有一个 C# 应用程序,预计可以在 WIn 7 和 Win XP 中运行。 在向客户分发 MSI 和 EXE 之前,我需要检查 C# 源代码中的操作系统名称。

没有进入更精细的版本控制细节,我的代码想检查它是 32 位 WINDOWS XP 还是 64 位 WINDOWS 7。

我能得到这方面的帮助吗?

正在考虑的操作系统是 64 位 Win7 和 32 位 Win XP。

您可以使用 WMI 获取操作系统的友好名称。

ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem");
String operatingSystem = String.Empty;

foreach (ManagementObject query in searcher.Get())
{
   operatingSystem = query["Caption"].ToString();
   break;
}

您可以使用WMI Code Creator ,这是一个来自 Microsoft 的强大工具来生成 WMI 查询。

你应该能够得到所有你从需要的信息环境类,具体而言, OSVERSIONIs64BitOperatingSystem性能。

是的,所有都给你正确的方向 Environment.OSVersion 给你操作系统版本,但如何知道它是 Windows XP 还是 7

您需要比较版本,这里是关注列表

Windows XP 5.1.2600 当前 SP3

Windows XP Professional x64 版 5.2.3790

Windows Vista 6.0.6000 当前版本更改为 6.0.6002 SP2

视窗 7 6.1.7600

更多Windows 操作系统版本号

if (Environment.OSVersion.Version.ToString().Equals("5.1.2600"))
{
    // windows xp 32-Bit with service pack 3
}
else if (Environment.OSVersion.Version.ToString().Equals("  6.1.7600"))
{
    // windows 7
}

查看System.Environment.OSVersion属性。 它属于操作系统类型,应包含所有相关信息。

您应该查看Environment.OSVersionEnvironment.Is64BitOperatingSystem

虽然您需要手动将返回的信息映射到适当的字符串。

看看环境类。 它包含您需要的方法。

简答:

Console.WriteLine("OSVersion: {0}", Environment.OSVersion.ToString());

您可以从注册表中获取操作系统名称。

string productName = Registry.GetValue(@"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion", "ProductName", "").ToString(); Console.WriteLine(productName);

输出: //对于我的 Windows 10,我得到了

Windows 10 企业版

试试这个以获取 Windows 产品名称

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM