2013-12-18 42 views
1

我已经达到了Win32_DiskDrive的目标,但是在Win32_CDROMDrive WMI类别中不存在那个属性(InterfaceType)。如何从Win32_CDROMDrive WMI类中获取接口类型?

如何获取光驱的接口类型?存在另一种手段来获得它?

在此先感谢。

+0

,如果你对CD-ROM界面运行'Win32_DiskDrive'会发生什么? –

+0

@RobertHarvey,它只显示计算机上安装的实际硬盘驱动器。 – InfZero

+1

嗯,我不认为你可以从这个班上得到它。如果你检查PNPDeviceID的前3个字符,你可以判断它是否是USB,但这就是它。请参阅http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/disk/drives/ –

回答

2

您可以从DeviceIDPNPDeviceID属性中提取接口类型。

试试这个样本

using System; 
using System.Collections.Generic; 
using System.Management; 
using System.Text; 

namespace GetWMI_Info 
{ 
    class Program 
    { 

     static void Main(string[] args) 
     { 
      try 
      { 
       ManagementScope Scope = new ManagementScope(String.Format("\\\\{0}\\root\\CIMV2", "localhost"), null); 
       Scope.Connect(); 
       ObjectQuery Query = new ObjectQuery("SELECT * FROM Win32_CDROMDrive"); 
       ManagementObjectSearcher Searcher = new ManagementObjectSearcher(Scope, Query); 

       foreach (ManagementObject WmiObject in Searcher.Get()) 
       { 
        String InterfaceType = ((String)WmiObject["DeviceID"]).Substring(0, ((String)WmiObject["DeviceID"]).IndexOf(@"\")); 
        Console.WriteLine("{0,-35} {1,-40}", "InterfaceType", InterfaceType); 
        Console.WriteLine("{0,-35} {1,-40}","Drive",WmiObject["Drive"]); 
        Console.WriteLine("{0,-35} {1,-40}","Name",WmiObject["Name"]); 

       } 
      } 
      catch (Exception e) 
      { 
       Console.WriteLine(String.Format("Exception {0} Trace {1}",e.Message,e.StackTrace)); 
      } 
      Console.WriteLine("Press Enter to exit"); 
      Console.Read(); 
     } 
    } 
}