如何通过C#桌面应用获取系统信息窗口中的Platform Role值?
嘿,这个需求其实挺容易实现的,我给你分享两种在C#桌面应用里获取系统信息窗口中Platform Role值的常用方案,你可以根据自己的项目情况选择:
方法1:使用System.Windows.Forms.SystemInformation(最简便)
这是.NET框架提供的现成API,直接就能拿到对应的值,不过需要你的项目引用System.Windows.Forms程序集。
代码示例:
using System; using System.Windows.Forms; class PlatformRoleGetter { static void Main() { // 获取系统的Platform Role ComputerRole platformRole = SystemInformation.ComputerRole; // 输出结果,对应系统信息窗口里的显示值 Console.WriteLine($"Platform Role: {platformRole}"); } }
说明:ComputerRole是一个枚举,包含三个核心成员,完全对应系统信息窗口里的Platform Role选项:
- Workstation:普通工作站(绝大多数个人电脑属于这类)
- DomainController:域控制器
- Server:独立服务器(非域控的服务器)
方法2:使用WMI查询(无WinForms依赖)
如果你的项目没有引用WinForms,或者想更底层地获取系统信息,可以用WMI查询Win32_ComputerSystem类的Role属性,需要引用System.Management程序集。
代码示例:
using System; using System.Management; class PlatformRoleWmiGetter { static void Main() { try { // 构造WMI查询语句,只获取Role属性 ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Role FROM Win32_ComputerSystem"); foreach (ManagementObject systemObj in searcher.Get()) { string platformRole = systemObj["Role"].ToString(); Console.WriteLine($"Platform Role: {platformRole}"); } } catch (ManagementException ex) { Console.WriteLine($"获取信息时出错: {ex.Message}"); } } }
说明:WMI返回的Role值和系统信息窗口的显示完全一致,除了上面三个常见值,还可能返回StandaloneWorkstation这类细分值,不过系统信息窗口会统一归类到对应的角色里。
注意事项
- 两种方法都需要你在项目中添加对应的引用:方法1加
System.Windows.Forms,方法2加System.Management(右键项目→添加引用→在程序集列表里找到对应项勾选即可) - 普通用户权限就能正常获取这些信息,不需要管理员权限
内容的提问来源于stack exchange,提问作者German Torres
相关产品推荐
相关产品推荐

