Если я хочу заблокировать / разблокировать 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
Что я хочу это:
генерирует белый список подключенных USB-устройств (любой USB, включает клавиатуру, USB-накопитель, мышь и т. д.). (решается с помощью wmic пути Win32_USBControllerDevice get *> usb.txt)
Блокировка / разблокировка всех 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 не является решением моей просьбы.
заранее спасибо