Я пишу сценарий, который использует MS КБ 823732 чтобы временно запретить пользователям подключать новые USB-устройства хранения данных. Это отлично работает, и HKLM\...\Services\UsbStor
Раздел реестра успешно блокирует доступ к вновь подключенным устройствам.
Есть ли событие WMI, которое сообщит мне, что диск был связанонезависимо от того, был ли он смонтирован?
Я пытался запросить __InstanceCreationEvent
но это очевидно только после того, как привод будет установлен и доступен, что не соответствует моим требованиям.
С источником: 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();
}
}