Открытие приложения при подключении USB-устройства в Windows с помощью WMI - PullRequest
1 голос
/ 15 мая 2010

Я пытаюсь запустить событие, когда кто-то подключает USB-устройство. На данный момент я просто распечатаю что-то на консоли (в готовом продукте оно запустит приложение).

Этот код очень слабо адаптирован из: https://serverfault.com/questions/115496/use-wmi-to-detect-a-usb-drive-was-connected-regardless-of-whether-it-was-mounted

Есть две проблемы: 1) Мне нужно передать аргумент в область управления динамически, потому что он будет установлен на компьютеры, которые я не использую или чье имя я не знаю 2) Я получаю недопустимое исключение пространства имен при вызове w.Start ();

Есть идеи, что я делаю не так?

static ManagementEventWatcher w=null;
static void Main(string[] args)
    {
        AddInstUSBHandler();
        for(;;);
    }

public static void USBRemoved(object sneder, EventArgs e)
    {
        Console.WriteLine("A USB device inserted");
    }


 static void AddInstUSBHandler()
    {
        WqlEventQuery q;
        ManagementScope scope = new ManagementScope("HQ\\DEV1");
        scope.Options.EnablePrivileges=true;

            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(USBRemoved);
            w.Start();
    }

1 Ответ

1 голос
/ 15 мая 2010

Эта строка неверна -> "HQ \ DEV1"

//ManagementScope scope = new ManagementScope("HQ\\DEV1");

Follow ManagementScope Class

    // Make a connection to a remote computer.
    // Replace the "FullComputerName" section of the
    // string "\\\\FullComputerName\\root\\cimv2" with
    // the full computer name or IP address of the
    // remote computer.
    ManagementScope scope = 
        new ManagementScope(
        "\\\\FullComputerName\\root\\cimv2");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...