我正在寻找一种优雅的方式来获得操作系统版本,如:"Windows XP Professional Service Pack 1"或"Windows Server 2008 Standard Edition"等.

有没有优雅的方法?

我还对处理器体系 struct (如x86或x64)感兴趣.

推荐答案

您可以使用WMI获取产品名称("Microsoft®Windows Server®2008 Enterprise"):

using System.Management;
var name = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().Cast<ManagementObject>()
                      select x.GetPropertyValue("Caption")).FirstOrDefault();
return name != null ? name.ToString() : "Unknown";

.net相关问答推荐

无法对.NET MAUI类库进行单元测试

竖线在 PropertyGroup .csproj 文件中的含义

使用 MassTransit、.NET Core 和 RabbitMQ 的设计挑战

如何为多种文件类型设置 FileSystemWatcher 过滤器?

我应该创建一个 DateRange 对象吗?

Winforms:Application.Exit vs Environment.Exit vs Form.Close

什么是 SUT,它来自哪里?

在安全处理异常时避免首次机会异常消息

为什么 .NET 中不需要 Maven?

.NET 如何判断路径是否是文件而不是目录?

在未安装 Visual Studio 的机器上使用 FUSLOGVW.EXE

C#中的T是什么意思?

一个接口是否应该继承另一个接口

MailMessage,Sender 和 From 属性的区别

是否可以判断对象是否已附加到实体框架中的数据上下文?

表单不响应 KeyDown 事件

System.IO.IOException:使用 System.IO.Path.GetTempFileName() 时文件存在 - 解决方案?

WPF 中的 Application.DoEvents() 在哪里?

您可以将 Microsoft Entity Framework 与 Oracle 一起使用吗?

什么时候使用 Tuple 和 KeyValuePair 比较好?