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