使用WMI来检测已连接的USB驱动器,无论它是否已安装?

我正在编写一个脚本,使用MS KB 823732来暂时阻止用户插入新的USB存储设备。 这工作正常,和HKLM\...\Services\UsbStorregistry项成功阻止新连接的设备被访问。

是否有一个WMI事件会告诉我,一个驱动器已连接 ,无论它是否被安装?

我试着查询__InstanceCreationEvent但显然只有在驱动器被安装并可用后才会产生,这不符合我的要求。

.NET版本: http : //dotnetslackers.com/community/blogs/basharkokash/archive/2008/02/06/usb-port-insert-remove-detection-using-wmi.aspx

来源:dotnetslackers.com/community/blogs/basharkokash/archive/2008/03/15/USB-Detection-source-code.aspx

相关部分:

 static void AddInsetUSBHandler() { WqlEventQuery q; ManagementScope scope = new ManagementScope("root\\CIMV2"); scope.Options.EnablePrivileges = true; try { q = new WqlEventQuery(); q.EventClassName = "__InstanceCreationEvent"; q.WithinInterval = new TimeSpan(0, 0, 3); q.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice'"; w = new ManagementEventWatcher(scope, q); w.EventArrived += new EventArrivedEventHandler(USBAdded); w.Start(); } catch (Exception e) { Console.WriteLine (e.Message); if (w != null) w.Stop(); } }