...
...
...

хитрости Windows: запрещаем пользователям инсталлировать устройства

Иногда Windows меня расстраивает, а некоторые вещи огорчают даже больше, чем сложности в установке и конфигурировании нового железа. До появления Plug & Play (PnP) установка оборудования была сложна, но, по меньшей мере, вы что-то узнавали о внутренностях Windows: например, как система распределяет ресурсы: IRQ, порты ввода/вывода и драйверы. Возникало чувство власти (благодаря знаниям по настройке и конфигурированию старого оборудования) и удовлетворения, когда все, наконец, отстраивалось и начинало работать.

PnP обещал положить конец таким трудностям, но переход от старого к полностью PnP-совместимому оборудованию был достаточно тернист. Меня до сих пор раздражает, когда каждый раз при перезагрузке своего домашнего компьютера он опознает старое, уже проинсталлированное, оборудование и спрашивает, хочу ли я снова установить его. Это, в частности, происходит с моим многофункциональным принтером HP LaserJet 3100, а предложенные Microsoft обходные пути для решения проблемы не дают результатов. Когда я пытаюсь пройти все шаги New Hardware Wizard («Мастера установки нового оборудования»), как рекомендует Microsoft, мастер повисает и инсталляция заканчивается неудачей, оставляя мне несколько копий одного и того же принтера в папке Printers (Принтеры), которые я по неким причинам не могу удалить.
Непорядок. Я думаю, однако, что это не вина Microsoft, так как HP, если бы занялась, смогла бы обновить свое инсталляционное ПО для принтеров и решить проблему в новой версии (я пробовал последний драйвер – без толку). Или, может, не прав я, так как использую «не полностью PnP» принтер, стоит смириться с положением и каждые несколько лет раскошеливаться на новый. Верно: винить нужно пользователя.

установка оборудования на клиентские машины

В сети компании дела могут обстоять еще более неприятно. Одно из отличных нововведений последних версий Windows – Group Policy (групповая политика), позволяющая блокировать различные элементы рабочей среды пользователей, чтобы ограничить возможный ущерб их компьютерам в том случае, если они начнут валять дурака. Но групповая политика не может закрыть все, так что иногда вам придется самостоятельно находить другие способы блокировки, например – запрет на установку пользователями нового оборудования.
Обычно в Windows 2000/XP только у администраторов есть права на установку нового оборудования, но PnP предоставляет возможность в некоторых случаях обойти это ограничение. Дело в том, что существует два способа инсталляции нового PnP-оборудования: «клиентский» и «серверный».
«Серверный» способ заключается в том, что когда вы подключаете PnP устройство к компьютеру, он определяет и автоматически инсталлирует железо безо всякого вмешательства со стороны пользователя. Этот тип установки производится с привилегиями SYSTEM и обычно работает в том случае, когда драйвер (.inf-файл) для устройства поставлялся с вашей версией Windows, либо похожее устройство уже было проинсталлировано на машине. PnP Manager («Менеджер PnP») все урегулирует, и процесс происходит, ак было сказано выше, с привилегиями SYSTEM.
«Клиентская» установка происходит в том случае, когда вы подключаете PnP устройство к компьютеру и он его определяет, но не может найти подходящего .inf-файла, либо находит .inf-файл без цифровой подписи. В этот момент установщик переключается в режим пользователя и Found New Hardware Wizard («Мастер установки нового оборудования») требует входа под учетной записью администратора для завершения инсталляции.
В этом-то и заключается проблема. Обычным пользователям в Windows 2000/XP не хватает привилегий для установки оборудования вручную при помощи апплета «Установка нового оборудования» («Add hardware») в Панели Управления. Но до тех пор, пока вы не зальете USB-порты их компьютеров эпоксидкой, они смогут подключать камеру, сканер, флэш-драйв или другое USB-устройство к своей машине и наблюдать, что произойдет. А если у Windows найдется драйвер к устройству, то произойдет «снрверная», автоматическая установка и оно будет безо всяких проблем проинсталлировано (если у Windows не окажется драйвера, то пользователю не повезло – по меньшей мере, до тех пор, пока он каким-то образом не узнает пароль учетной записи администратора).
К сожалению, Групповая Политика (Group Policy) не предоставляет возможности запрета этого, но есть интересный обходной путь. Просто удалите файл driver.cab, содержащий все драйверы устройств вашей версии Windows. Файл находится в папке %SystemRoot%\Driver Cache\I386 для настольных систем, обладает атрибутом «Hidden» (Скрытый), так что не забудьте изменить настройки папки для его обнаружения :)
Если вы удалите этот файл на машине пользователя, то при подключении пользователем к машине нового устройства, PnP Manager запустит процесс установки, но не сможет найти драйвер локально и затребует логина/пароля администратора для завершения инсталляции. Если система пропатчена сервис-паком (на момент написания последним был SP4 для Windows 2000), то не забудьте заодно удалить и файл sp4.cab из этой же папки, так как он тоже содержит драйверы для поддерживаемых устройств.
Как вариант, вы можете поменять ACL (список прав доступа) файла driver.cab, дабы запретить доступ для встроенной учетной записи SYSTEM. Это тоже должно работать, хотя я еще не проверял. Вы можете изменить ACL файла при помощи cacls.exe в логин-скрипте.
Еще один подход заключается в изменении ключа реестра HKLM\Software\Microsoft\Windows\CurrentVersion\Setup\DriverCachePath таким образом, чтобы он указывал не в %SystemRoot%\Driver Cache, а в какую-то другую папку. В этом случае PnP Manager не сможет найти кэш драйверов, и инсталляция будет сорвана. Я это тоже еще не проверял, так что проверьте это на тестовой машине перед внесением изменений в реестр при помощи Групповой Политики (Group Policy).
Дополнительным вариантом будет использование продуктов от сторонних разработчиков, вроде SecureNT от SecureWave или DeviceLock от SmartLine для блокировки ввода/вывода и интерфейсов устройств на

Митч Таллоч, автор книг «Windows 2000 Administration in a Nutshell», «Windows Server 2003 in a Nutshell» и «Windows Server Hacks».
Перевод Николая "Nickky" Щетько,me@nickky.com.



© Сетевые решения