2

Если я хочу заблокировать / разблокировать USB-устройства, я запускаю в cmd:

:block
reg add "HKLM\SYSTEM\CurrentControlSet\services\USBSTOR" /v Start /t REG_DWORD /d 4 /f
:unblock
reg add "HKLM\SYSTEM\CurrentControlSet\services\USBSTOR" /v Start /t REG_DWORD /d 3 /f

Что я хочу это:

  1. генерирует белый список подключенных USB-устройств (любой USB, включает клавиатуру, USB-накопитель, мышь и т. д.). (решается с помощью wmic пути Win32_USBControllerDevice get *> usb.txt)

  2. Блокировка / разблокировка всех USB-устройств, кроме белого списка. В Linux это можно сделать с помощью Udev. Я понятия не имею, как это делается в Windows.

Примечание: пожалуйста. Я предпочитаю использовать пакетные /wmic /regedit /cmd и т.д. Вместо USBDeview или другого решения с графическим интерфейсом. Меня также не интересуют решения на основе Powershell

Мои исследования для решения проблемы: я нашел набор сценариев на основе Devcon. Один называется RenewUSB.bat. Этот скрипт удаляет все USB-устройства, а затем повторно сканирует их на наличие новых. В конечном итоге это может послужить отправной точкой для того, что я хочу.

Чтобы скачать devcon в этой старой ссылке Microsoft. Чтобы получить список драйверов для всех USB-устройств с командами:

%windir%\system32\devcon.exe DriverFiles =USB > usb.txt
%windir%\system32\devcon.exe find USB\* > usb.txt
%windir%\system32\devcon.exe find *VID* > usb.txt 

PD: большинство usb имеют идентификаторы "VID" и "USB". Пример:

USB\VID_1C4F&PID_0002&MI_01\6&1578F7C2&0&0001 : Input device USB
HID\VID_1C4F&PID_0002&MI_00\7&2B89365C&0&0000 : Keyboard device HID

Чтобы заблокировать / разблокировать (определенное устройство usb.txt):

USB\VID_13FE&PID_1D00\5B7912980144     : USB storage device
%windir%\system32\devcon.exe disable *VID_13FE*
%windir%\system32\devcon.exe enable *VID_13FE*

Чтобы заблокировать / разблокировать все USB-устройства

%windir%\system32\devcon.exe disable *VID* *USB*
%windir%\system32\devcon.exe enable *VID* *USB*

Иногда devcon не отключает все usb. Только несколько. Пример:

USB\VID_1C4F&PID_0002&MI_01\6&1578F7C2&0&0001 : Disabled
HID\VID_1C4F&PID_0002&MI_00\7&2B89365C&0&0000 : Disable failed

В этом случае нет решения. Замените только команду "отключить" на "удалить".

%windir%\system32\devcon.exe remove *VID* *USB*

Но devcon не является постоянным решением для блокировки и разблокировки устройств (например, reg add). Тест состоит в том, что мы можем заблокировать USB-устройство и затем запустить скрипт bash renewusb_2k.bat, и мы увидим, что скрипт снова переустанавливает драйверы USB, и заблокированное USB-устройство снова становится доступным. Так что devcon не является решением моей просьбы.

заранее спасибо

1 ответ1

0

См. Следующие технические статьи о том, как ограничивать и разрешать устройства с помощью групповой политики. В частности, Prevent installation of devices not described by other policy settings политики, и Allow installation of devices that match any of these device IDs политик идентификаторов устройств . Вам нужно будет создать список всех устройств, а не только USB-устройств. Потому что я не уверен, что политика запрещает новые установки или будет препятствовать загрузке драйверов для существующих установленных устройств. Даже если это были только новые установки, учтите, что установка новых драйверов будет считаться установкой нового оборудования.

https://technet.microsoft.com/en-us/library/2007.06.grouppolicy.aspx

https://technet.microsoft.com/en-us/library/cc772161(v=ws.10).aspx

Если вы настаиваете на использовании командной строки, вы можете создавать объекты групповой политики с powershell:

https://technet.microsoft.com/en-us/library/ee461027.aspx

А чтобы получить список всех устройств, установленных в настоящее время в вашей системе с помощью powershell, посмотрите этот ответ.

Сценарий Powershell для экспорта всех устройств в диспетчере устройств в виде дерева или списка?

AFAIK, вы не можете сделать это, используя устаревшую командную строку / пакетные файлы Microsoft. В любом случае вам следует переключиться на powershell, поскольку MS отключила устаревшую командную строку по умолчанию в последней сборке инсайдера Windows 10 и, вероятно, внесет это изменение всем пользователям в следующем крупном обновлении.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .