【问题标题】:How to get the name of OS in which the code is running using C#?如何使用 C# 获取运行代码的操作系统的名称?
【发布时间】:2011-06-28 08:42:32
【问题描述】:

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

无需进行更精细的版本控制 详细说明我的代码是否要检查 是 32 位 WINDOWS XP 还是 64 位 视窗 7。

我可以就这方面寻求帮助吗?

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

【问题讨论】:

  • 您也关心 Vista 吗?或者一些不包括媒体播放器的特定语言环境的更复杂的版本,例如)
  • 查看此答案 [此处][1] [1]:stackoverflow.com/questions/1410092/…
  • No WIndows Vista 不在考虑范围内。

标签: c# windows-xp operating-system windows-7-x64


【解决方案1】:

您可以使用 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 查询。

【讨论】:

    【解决方案2】:

    您应该能够从Environment class,特别是OSVersionIs64BitOperatingSystem 属性中获取您需要的所有信息。

    【讨论】:

      【解决方案3】:

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

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

      Windows XP 5.1.2600 当前 SP3

      Windows XP Professional x64 版 5.2.3790

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

      Windows 7 6.1.7600

      更多Windows OS Version Numbers

      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
      }
      

      【讨论】:

      • 不管有多少版本,我只想检查操作系统是 32 位 WINDOWS XP 还是 64 位 WINDOWS 7。我不想进入版本控制细节。我可以得到有关此问题的帮助吗?
      • @engineerMaster 是的,您可以比较版本以了解操作系统是 XP 还是 Windows 7
      • Well 7 是 6.1(主要版本 6,次要版本 1),XP 是 5.1.. 见这里 msdn.microsoft.com/en-us/library/ms724834%28VS.85%29.aspx> 虽然您需要解析结果并摆脱构建它似乎,但如果您不想包含 Server 2008 R2,您还需要检查产品类型(不知道如何在 .NET 中执行此操作)。
      【解决方案4】:

      查看System.Environment.OSVersion 属性。它是OperatingSystem 类型,应该包含所有相关信息。

      【讨论】:

        【解决方案5】:

        您应该查看Environment.OSVersionEnvironment.Is64BitOperatingSystem

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

        【讨论】:

          【解决方案6】:

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

          简答:

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

          【讨论】:

            【解决方案7】:

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

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

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

            Windows 10 企业版

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-05-25
              • 1970-01-01
              • 2017-06-15
              • 2010-12-01
              • 2021-03-06
              • 2021-01-01
              • 1970-01-01
              • 2019-01-19
              相关资源
              最近更新 更多