如何使用C#检查硬盘是SATA设备还是IDE设备

7

我有一个SATA硬盘,想要用C#窗体检测它。我想显示出它是SATA还是IDE驱动器。我正在使用下面的代码,但它总是返回IDE,但应该返回SATA。所以有人能帮我找出错误吗。

WqlObjectQuery q = new WqlObjectQuery("SELECT * FROM Win32_DiskDrive");
ManagementObjectSearcher res = new ManagementObjectSearcher(q);

foreach (ManagementObject o in res.Get())
 {
  string lblInterface= o["InterfaceType"].ToString();
 }

你可以使用 Drive Info 类。你可以获取信息。 - venkat.....
2个回答

1
根据Win32_DiskDrive类,InterfaceType的可能取值为:

SCSI

HDC

IDE

USB

1394

因此,您不会看到SATA。
但是,Caption属性可能包含有关驱动器的额外信息。您可以解析它以查找是否包含ATA或SCSI。

好的,但是SATA驱动器对应的值是哪个?它返回的是IDE,但我有SATA驱动器。 - Durgesh Pandey
好的,它不在可能值列表中,因此默认为IDE? - Alex
这个问题可能会对你有所帮助:http://stackoverflow.com/questions/5362199/how-to-check-if-hard-drive-is-eide-or-sata-with-powershell - Alex
谢谢,但我正在寻找C#。 - Durgesh Pandey
1
这是相同的基础 API。 - yaakov

1

检查win32_DiskDrivecaption属性,查找字符串ATA。

来自MSDN 标题 数据类型:字符串 访问类型:只读 限定符:MaxLen(64),DisplayName(“标题”) 对象的简短描述

foreach (ManagementObject o in res.Get())
{
     string sCaption = o["Caption"].ToString();
     if(sCaption.Contains("ATA"))
     {
          Console.WriteLine("SATA Drive");
          break;
     }
}

你确定每个SATA设备的标题都包含“ATA”字符串吗? - Durgesh Pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接