用c#写的代码,获取硬盘序列号,总是提示错误,无效的表达式"⼀" 求高手帮忙,

2025-03-12 17:25:44
推荐回答(3个)
回答1:

("win32_logicaldisk.deviceid=/"d:/"");

这个错了,计算机会默认"win32_logicaldisk.deviceid=/" 为一个字符串
之后出现的 d:/""); 就会报错
我估计你应该是写错了, /换成 \, \后面跟的符号会原样加入到字符串中
/换成\再试试

回答2:

你的ManagementObject构造函数参数传递错误
应该是"win32_logicaldisk.deviceid=/d:/"

回答3:

那代码不是获取硬盘序列号,获取的只是一个盘符的卷号,每一个盘符都有一个卷号。
下面的代码是获取硬盘序列号:
public static string GetHardDiskID()
{
ManagementObjectSearcher mos = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
string strHardDiskID = null;
foreach (ManagementObject mo in mos.Get()) {
strHardDiskID = mo["SerialNumber"].ToString().Trim();
break;
}
return strHardDiskID;
}

你上面的代码把斜杠写反了,修改一下是这个样子的

public static string GetDiskVolumeSerialNumber()
{
ManagementObject disk;
disk = new ManagementObject("win32_logicaldisk.deviceid=\"d:\"");
disk.Get();
return disk.GetPropertyValue("VolumeSerialNumber").ToString();
}