我想从一个驱动器上得到模型的名字。例如,Crucial_CT256MX100SSD1
是我的驱动器C:\
的模型
可以通过简单的WMI查询检索模型,
var hdd = new ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive WHERE Index = '0'")
.Get()
.Cast<ManagementObject>()
.First();
MessageBox.Show(hdd["Model"].ToString());
但是,我不能使用驱动器字母过滤查询。
不幸的是,Win32_LogicalDisk
没有驱动器的模型。
我没有更多的想法。
发布于 2014-12-23 23:42:31
我给你写了一个函数,它能满足你的需要:
class Program
{
static void Main(string[] args)
{
const string drive = "C:";
Console.WriteLine("Drive {0}'s Model Number is {1}", drive, GetModelFromDrive(drive));
}
public static string GetModelFromDrive(string driveLetter)
{
// Must be 2 characters long.
// Function expects "C:" or "D:" etc...
if (driveLetter.Length != 2)
return "";
try
{
using (var partitions = new ManagementObjectSearcher("ASSOCIATORS OF {Win32_LogicalDisk.DeviceID='" + driveLetter +
"'} WHERE ResultClass=Win32_DiskPartition"))
{
foreach (var partition in partitions.Get())
{
using ( var drives = new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" +
partition["DeviceID"] +
"'} WHERE ResultClass=Win32_DiskDrive"))
{
foreach (var drive in drives.Get())
{
return (string) drive["Model"];
}
}
}
}
}
catch
{
return "<unknown>";
}
// Not Found
return "<unknown>";
}
}
只需传入一个字符串,如C:
或D:
。一定是驱动器号和冒号。而且,我只为硬盘做了这个工作。它不会在光盘驱动器上工作.不过,如果您需要该功能,则可以扩展它。
发布于 2014-12-23 22:40:53
我相信分区驱动映射可以从Win32_LogicalDiskToPartition
和Win32_DiskDriveToDiskPartition
类中读取。
发布于 2014-12-23 22:50:06
Win32_DiskDriveToDiskPartition,Win32_LogicalDiskToPartition
蛮力:
https://stackoverflow.com/questions/27628965
复制相似问题