распознование нового usb-накопителя

Тема в разделе "WASM.WIN32", создана пользователем masterkey, 27 фев 2012.

  1. masterkey

    masterkey New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2012
    Сообщения:
    4
    Подскажите, как отловить подключение нового usb-накопителя в delphi? Когда система распознает что это именно usb-накопитель а не принтер например. Как я понимаю, сначала происходит распознание именно устройства как накопителя, а потом уже система обращается к usbstor.inf за информацией о накопителе. Хотелось бы вот этот самый этап распознавания поймать.
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    masterkey
    Начни отсюда:
    RegisterDeviceNotification()
    Задачу уточни, этого может быть недостаточно.
     
  3. masterkey

    masterkey New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2012
    Сообщения:
    4
    Ну как бы и уточнять то особо нечего. Мне нужно закрыть доступ к usb-накопителям. Покапавшись в интернете нашел наиболее простой способ запретить для этого доступ к файлу usbstor.inf, предварительно очистив информацию о всех уже ранее использовавшихся в системе накопителях. Но хотелось бы еще запретить вывод окна о поиске драйвера (так как usbstor.inf заблокирован будет выскакивать окно поиска драйвера).
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    masterkey
    Вот здесь почитай внимательно, и далее по ссылкам.
     
  5. masterkey

    masterkey New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2012
    Сообщения:
    4
    Спасибо за ссылку. Я уже читал несколько раз про этот способ, правда на других ресурсах. Дело в том, что usb-накопители надо запретить в сети без домена, вдобавок ко всему пользователи являются локальными администраторами. Поэтому мне подходит вариант с сервисом, запрещающим использование накопителей, который в случае его выключения сигнализирует о том что его выключили или попытались выключить..
     
  6. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Во-первых, не совсем понятно, как ты собрался отслеживать тупое убиение процесса службы? Во-вторых, мне не понятно, как ты в службе собрался запрещать подключение USB-девайсов? Ты планируешь вернуть код ошибки в ответ на SERVICE_CONTROL_DEVICEEVENT с кодом DBT_DEVICEARRIVAL? Сомневаюсь, что это поможет достичь обозначенной цели. Я бы всё же через драйвер-фильтр сделал, надёжнее ибо.
     
  7. masterkey

    masterkey New Member

    Публикаций:
    0
    Регистрация:
    8 фев 2012
    Сообщения:
    4
    Ну отслеживание убиения процесса можно организовать легко. Можно например сделать два зависимых процесса в случае убийства одного из них второй тут же пошлет сообщение администратору, или даже еще и осуществит повторный запуск сервиса. А вот насчет как запретить подключение usb-девайсов, думаю можно в тех же зависимых процессах занять: TFileStream.Create('C:\WINDOWS\inf\usbstor.PNF', fmOpenRead, fmShareDenyNone); ну или еще как.. Примитивно конечно)) но работать то будет. Но вот как запретить показ окна "установка драйвера"?

    Ну а как это сделать?
     
  8. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    masterkey
    Ваша идея это целая холепа.

    x64 прав, требуется фильтер для usbstor , на форуме уже где то это писалось , так что юзайте поиск.