如何使用Win32_DiskDrive识别系统硬盘驱动器
本文关键字:识别 系统 硬盘驱动器 DiskDrive 何使用 Win32 | 更新日期: 2023-09-27 18:25:48
我正在使用WMI获取有关计算机上硬盘驱动器的信息,但我找不到允许我识别哪个硬盘驱动器用作安装Windows的系统驱动器的属性。
ManagementObjectSearcher mos_HDD = new ManagementObjectSearcher("select * from Win32_DiskDrive");
我试着迭代所有的属性,但看起来都没有包含我需要的信息。
foreach (ManagementObject mo_HDD in mos_HDD.Get())
{
Console.WriteLine("HDD Properties:");
foreach (PropertyData pd in mo_HDD.Properties)
{
Console.WriteLine("'tName: {0} 'tValue: {1}", pd.Name, pd.Value != null ? pd.Value.ToString() : "NULL");
}
}
我也看过MSDN文档,但运气不好。
我在这里要做的是为系统驱动器获取某种标识符(例如签名或序列号)。
非常感谢您为获取此信息提供的任何帮助。
您可以将其获取为:
public static void Main()
{
try
{
ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root''CIMV2",
"SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject queryObj in searcher.Get())
{
Console.WriteLine("SerialNumber: {0}", queryObj["SerialNumber"]);
Console.WriteLine("Signature: {0}", queryObj["Signature"]);
}
}
catch (ManagementException e)
{
}
}
您链接的文档有答案:
string SerialNumber;
uint32 Signature;
您的管理对象将包含这些属性。
如果这些值为null,那么问题是您使用的Windows版本不支持这些值。
SerialNumber
...
Windows Server 2003 and Windows XP: This property is not available.
在这种情况下,您必须使用Signature属性,但我认为这需要XP SP3。
有一个类似于Win32_Diskdrive的类别Win32_LogicalDisk,它拥有卷,而不是物理磁盘。它有一个带有驱动器号的名称属性。
环境变量%SystemRoot%具有windows所在的路径(例如D:''windows)也在注册表Computer''HKEY_LOCAL_MACHINE''SOFTWARE''Microsoft''Windows NT''CurrentVersion SystemRoot中。
因此,您可以将SystemRoot驱动器号与Win32_LogicalDisk中的Name属性进行比较。
我相信有一种方法可以从Win32_Diskdrive的属性中获取卷列表,但我还没有尝试过。