У руководства возникла идея установить на всех ПК организации одинаковый скринсейвер (хранитель экрана), представляющий собой слайд-шоу с изображениями. В качестве изображений планируется использование картинок, выполненных в корпоративном стиле компании, на которых указываются основные правила информационной безопасности, полезные советы для пользователей и другая справочная информация. В результате, у меня получилось решение распространения файлов с картинками и управления экранной заставкой с помощью возможностей GPO (групповых политик).
Сразу отмечу, что в компании в качестве клиентских ОС используются все поддерживаемые версии Windows: Windows 7, Windows 8.1 и Windows 10, поэтому решение по управлению корпоративной заставкой должно быть универсальным и работать на любой версии ОС.
Первоначально рассматривался вариант по созданию собственного скринсейвера в формате *.scr, но такая методика требует дополнительного софта и не достаточно гибка и проста в управлении.
В ОС Windows, начиная с Windows 7 на экране блокировки в качестве скринсейвера можно отображать слайд шоу из изображений в указанной папке, но управлять этими настройками с помощью GPO нельзя. Пришлось искать обходное решение.
Общий сетевой каталог с изображениями для слайд шоу
В первую очередь на любом сервере сети создадим общий сетевой каталог, в котором будут храниться оригиналы файлов с изображениями для слайдшоу. Необходимо предоставить всем пользователям домена (группе Domain Users) права на чтение файлов в этой папке. К примеру, в нашем случае файлы хранятся по следующему UNС пути: \\srv1\Install\Img. Скопируем в нее файлы изображений.
Затем создадим файл со скриптом copy_screens.bat, который должен подключать данную сетевую папку на клиентах и копировать файлы с изображениями для скринсейвера на локальный диск каждого компьютера в папку C:\Screen. Код скрипта copy_screens.bat представлен ниже.
net use s: \\srv1\Install\Img
mkdir C:\Screen
del /Q C:\Screen\*.*
xcopy S:\*.* C:\Screen
Скопируйте скрипт в каталог SYSVOL на контроллере домена (C:\Windows\SYSVOL\sysvol\contoso.com\scripts). Затем с помощью редактора групповой политики создайте новую GPO или отредактируйте имеющуюся. С целью демонстрации, мы будем запускать задание копирования через разовое задание планировщика (если нужно обновить слайды, назначьте повторный запуск задания). Создадим с помощью GPO новое задание планировщика для всех ПК.
Перейдите в раздел User Configuration > Preferences > Control Panel Settings > Scheduled Tasks и создайте новое задание (New->Scheduled Task at Least Windows 7) со следующими параметрами:
Имя задания: CopyScreen
Действие: Update
Запускать задание из-под: %LogonDomain%\%LogonUser%
На вкладке Triggers, добавим новое условие New Trigger -> On a Schedule -> One Time
На вкладке Action – укажем, что нужно запускать скрипт: \\contoso.com\SYSVOL\contoso.com\scripts\copy_screens.bat
Сохраните изменения в задании и назначьте политику на OU с пользователями.
Настройка параметра скинсейвера на эталонном ПК
Теперь на эталонном компьютере нужно настроить сринсейвер, чтобы он брал изображения для слайдшоу из папки C:\Screen. Настройки соответствующих веток реестра этого компьютера в дальнейшем распространим на все ПК с помощью GPO.
В случае Windows 10 перейдите в следующий раздел настроек: Start -> Settings -> Personalization -> Lock Screen. Промотайте вниз и найдите Screen Saver Settings. В качестве скринсейвера выберите ‘Photos’ и нажмите кнопку Settings.
Укажите путь к папке C:\Screen, включите опцию Tick Shuffle Pictures и сохраните изменения.
Теперь нам нужно экспортировать ветку реестра HKEY_CURRENT_USER > Software > Microsoft > Windows Photo Viewer > Slideshow > Screensaver в reg файл и импортировать ее на контроллере домена (или другом компьютере, с которого выполняется редактирование GPO).
Важно. Путь к каталогу с изображениями хранится в ключе EncryptedPIDL в зашифрованном виде (Base64), поэтому изменить его вручную не получится. Но, т.к. Windows некорректно расставляет переносы строки в значении этого ключа, придется вручную отредактировать reg файл (с помощью блокнота) и сделать так, чтобы значения ключа EncryptedPIDL содержалось в одной строке.