("win32_logicaldisk.deviceid=/"d:/"");
这个错了,计算机会默认"win32_logicaldisk.deviceid=/" 为一个字符串
之后出现的 d:/""); 就会报错
我估计你应该是写错了, /换成 \, \后面跟的符号会原样加入到字符串中
/换成\再试试
你的ManagementObject构造函数参数传递错误
应该是"win32_logicaldisk.deviceid=/d:/"
那代码不是获取硬盘序列号,获取的只是一个盘符的卷号,每一个盘符都有一个卷号。
下面的代码是获取硬盘序列号:
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();
}