如何获取HDD序列号
本文关键字:HDD 序列号 获取 何获取 | 更新日期: 2023-09-27 17:58:48
可能是标题重复。当没有USB设备连接时,我成功地获得了笔记本电脑序列号的HDD。但当任何USB连接时,代码都会获得连接设备的序列号。即使连接了USB,我也只想要笔记本电脑或台式机的HDD的序列号。
下面是代码。
using System.Management;
namespace SystemInfo
{
public class Info1
{
public static String GetHDDSerialNo()
{
ManagementClass mangnmt = new ManagementClass("Win32_LogicalDisk");
ManagementObjectCollection mcol = mangnmt.GetInstances();
string result = "";
foreach (ManagementObject strt in mcol)
{
result += Convert.ToString(strt["VolumeSerialNumber"]);
}
return result;
}
}
}
尝试这个
ManagementObjectSearcher theSearcher = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE InterfaceType='USB'");
foreach (ManagementObject currentObject in theSearcher.Get())
{
ManagementObject theSerialNumberObjectQuery = new ManagementObject("Win32_PhysicalMedia.Tag='" + currentObject["DeviceID"] + "'");
MessageBox.Show(theSerialNumberObjectQuery["SerialNumber"].ToString());
}
您可以使用WMI Win32_DiskDrive
,过滤包含"fixed"的MediaType
,并获得SerialNumber
类似于:
public static String GetHDDSerialNo()
{
ManagementClass mangnmt = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection mcol = mangnmt.GetInstances();
string result = "";
foreach (ManagementObject strt in mcol)
{
if (Convert.ToString(strt["MediaType"]).ToUpper().Contains("FIXED"))
{
result += Convert.ToString(strt["SerialNumber"]);
}
}
return result;
}
介质类型可以包含"外部"、"可移动"、"固定"。确切的字符串取决于操作系统。在Seven和XP上,String
可能不同。这就是我们使用Contains
的原因。
小读数