使用 c# 如何提取有关本地计算机上存在的硬盘驱动器的信息

Posted

技术标签:

【中文标题】使用 c# 如何提取有关本地计算机上存在的硬盘驱动器的信息【英文标题】:using c# how can I extract information about the hard drives present on the local machine 【发布时间】:2010-09-18 23:30:01 【问题描述】:

我正在寻找数据,例如尺寸/容量、序列号、型号、头部部门、制造商以及可能的 SMART 数据。

【问题讨论】:

【参考方案1】:

您可以使用WMI 来获取您想要的大部分信息,还有WMI 的介绍here。

【讨论】:

【参考方案2】:

您可以使用 WMI 调用来访问有关硬盘的信息。

//需要使用 System.Management; & System.Management.dll 参考

ManagementObject disk = new ManagementObject("win32_logicaldisk.deviceid=\"c:\""); 
disk.Get(); 
Console.WriteLine("Logical Disk Size = " + disk["Size"] + " bytes"); 
Console.WriteLine("Logical Disk FreeSpace = " + disk["FreeSpace"] + "bytes");

【讨论】:

【参考方案3】:

您应该使用System.Management 命名空间:

System.Management.ManagementObjectSearcher ms =
    new System.Management.ManagementObjectSearcher("SELECT * FROM Win32_DiskDrive");
foreach (ManagementObject mo in ms.Get())

    System.Console.Write(mo["Model");

有关 Win32_DiskDrive 类成员的详细信息,请查看:

http://msdn.microsoft.com/en-us/library/aa394132(VS.85).aspx

【讨论】:

【参考方案4】:

最简单的方法是使用 WMI 来获取所需的信息。查看 MSDN 中Win32___DiskDrive 的文档,其中包含各种标准驱动器属性。您也可以尝试使用 MSStorageDriver_ATAPISmartData WMI 类,我目前找不到任何文档,但应该包含您正在寻找的所有 SMART 数据。下面是枚举所有驱动器并获取其属性的一些基本示例代码:

ManagementClass driveClass = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection drives = driveClass.GetInstances();
foreach (ManagementObject drive in drives) 
 
    foreach (PropertyData property in drive.Properties)
    
        Console.WriteLine("Property: 0, Value: 1", property.Name, property.Value);        
    
    Console.WriteLine();

【讨论】:

您是否可以使用 WMI 通过测试文件检查读/写速度?

以上是关于使用 c# 如何提取有关本地计算机上存在的硬盘驱动器的信息的主要内容,如果未能解决你的问题,请参考以下文章

本地计算机上的 Windows 服务启动然后停止错误

创建虚拟硬盘

如何使用 Oracle 数据泵导出实用程序在本地计算机上创建转储文件?

我可以从 C# .Net 驱动程序中多个文档中存在的数组中提取多个元素吗

关于C#联接数据库是出现'未在本地计算机上注册'错误的解决办法

我如何使用模拟功能通过UNC在远程计算机上操纵文件/目录?