如何将C#获取的Motherboard Name转换为字符串变量值?
获取主板名称并转为字符串变量及HEX编码的实现方案
你当前的代码已经能通过WMI获取主板信息,但缺少将Product(主板名称)提取为独立字符串变量的逻辑。以下是修改后的完整代码,直接解决你的问题:
using System; using System.Management; using System.Text; public class Programa { public static void Main() { // 存储主板名称的字符串变量 string motherboardName = null; using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Product FROM Win32_BaseBoard")) { ManagementObjectCollection information = searcher.Get(); foreach (ManagementObject obj in information) { // 提取Product属性值并转为字符串,处理可能的空值 motherboardName = obj["Product"]?.ToString() ?? "Unknown Motherboard"; Console.WriteLine($"Motherboard Name = {motherboardName}"); break; // 通常只有一块主板,获取到后直接跳出循环 } // HEX转换逻辑,使用获取到的主板名称变量 if (!string.IsNullOrEmpty(motherboardName)) { byte[] bytes = Encoding.UTF8.GetBytes(motherboardName); string hexString = Convert.ToHexString(bytes); Console.WriteLine($"String value: \"{motherboardName}\""); Console.WriteLine($" Hex value: \"{hexString}\""); } else { Console.WriteLine("Failed to retrieve motherboard name."); } } } }
关键修改点说明:
- 新增
motherboardName字符串变量专门存储主板名称 - 直接通过
obj["Product"]定位到目标属性,用?.ToString()安全转换为字符串,同时用??处理属性值为null的异常情况 - 针对单主板场景添加
break语句,减少不必要的循环遍历 - 将HEX转换逻辑与实际获取到的主板名称变量绑定,替换原测试用的固定字符串
- 增加空值判断,避免转换过程中出现异常
内容的提问来源于stack exchange,提问作者MSNGuy
相关产品推荐
相关产品推荐

