代码之家  ›  专栏  ›  技术社区  ›  AndyM

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

  •  6
  • AndyM  · 技术社区  · 16 年前

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

    4 回复  |  直到 16 年前
        1
  •  9
  •   Eoin Campbell    16 年前

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

    //需要使用系统。管理;&系统。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");
    
        2
  •  3
  •   Tamas Czinege    16 年前

    你应该使用 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

        3
  •  2
  •   Stu Mackellar    16 年前

    最简单的方法是使用WMI获取所需的信息。请查看以下文档 Win32___DiskDrive MSDN中包含各种标准驱动器属性。您还可以尝试使用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();
    }
    
        4
  •  0
  •   jmcd    16 年前

    您可以使用 WMI 为了获取您想要的大部分信息,这里介绍了WMI here .

    推荐文章