2 回答
TA贡献1799条经验 获得超8个赞
您可以将ManagmentObjectSearch与ASSOCIATORS OF语句结合使用:
public static string GetSerialNumber(string logicalDrive)
{
using (var partitionsQuery = new ManagementObjectSearcher(string.Format("ASSOCIATORS OF {{Win32_LogicalDisk.DeviceID='{0}'}} WHERE ResultClass = Win32_DiskPartition", logicalDrive)))
{
foreach (var results in partitionsQuery.Get())
{
using (var diskDrives = new ManagementObjectSearcher(string.Format("ASSOCIATORS OF {{Win32_DiskPartition.DeviceID='{0}'}} WHERE ResultClass=Win32_DiskDrive", results["DeviceID"])))
{
foreach (var d in diskDrives.Get())
{
Console.WriteLine("Serial: " + d["SerialNumber"]);
return d["SerialNumber"].ToString();
}
}
}
}
return null;
}
用法:
var num = GetSerialNumber(Path.GetPathRoot(Environment.SystemDirectory).TrimEnd(new [] {'\\'}));
注意:不要忘记从 . 返回的路径中删除反斜杠Path.GetPathRoot。
TA贡献1864条经验 获得超6个赞
您可以使用 System.Management 中的 ManagementObjectSearcher 类,然后循环遍历属性来查找序列号。
我认为沿着这些思路的东西会让你接近你正在寻找的东西......
var search = new ManagementObjectSearcher("select * from Win32_DiskDrive");
foreach (var mo in search.Get())
{
if (mo["SerialNumber"] != null)
{
return mo["SerialNumber"].ToString();
}
}
- 2 回答
- 0 关注
- 91 浏览
添加回答
举报