1

我想使用 C# 在我的 Windows 系统上获取有关所有可移动媒体设备(如 USB 磁盘、智能卡读卡器等)和集成设备(如指纹读取器、集成摄像头等)的详细信息。如果可以通过 WMI 完成,请告诉我详细的方法,因为我尝试查询“Win32_LogicalDisk”类,但这并没有产生太多有用的结果。还有Windows API“DeviceIOControl”,在这方面对我有多大帮助?

4

1 回答 1

1

你检查了下面的课程吗?

  System.IO.DriveInfo

除了本课程提供的信息之外,您还需要哪些详细信息?

http://msdn.microsoft.com/en-us/library/system.io.driveinfo.aspx

您可以检查此命名空间中的其他类。

根据评论编辑:

如果要在运行时检测设备,可以使用:

ManagementEventWatcher & WqlEventQuery

下面是一个例子:

WqlEventQuery _q = new WqlEventQuery("__InstanceOperationEvent", "TargetInstance ISA    'Win32_USBControllerDevice' ");
        _q.WithinInterval = TimeSpan.FromSeconds(1);
        _usbWatcher = new ManagementEventWatcher(_q);
        _usbWatcher.EventArrived += new   EventArrivedEventHandler(OnUSBDetectedOrDetached);
        _usbWatcher.Start();

并在事件处理程序中:

void OnUSBDetectedOrDetached(object sender, EventArrivedEventArgs e)
    {
        ManagementBaseObject _o = e.NewEvent["TargetInstance"] as ManagementBaseObject;
        if (_o != null)
        {
            using (ManagementObject mo = new ManagementObject(_o["Dependent"].ToString()))
            {
                if (mo != null)
                {
                    try
                    {
                        string devId = string.Empty;
                        devId = mo.GetPropertyValue("DeviceID").ToString();
                        if (devId != string.Empty)
                        {
                            Trace.WriteLine("Detected USB Device, DevId: " + devId);
                        }
....
于 2013-07-18T08:56:41.380 回答