Заметки о Windows и других программных продуктах Microsoft...

Active Setup

Active Setup

Наверняка вы замечали, что самый первый вход пользователя в систему занимает несколько больше времени, чем все последующие. Это связано с тем, что при входе к пользователю применяются настройки различных программных продуктов, таких как Microsoft Office, Internet Explorer и т.п. Механизм, реализующий эти настройки, называется Active Setup.

Active Setup предназначается для однократного применения настроек ПО, поэтому для каждого пользователя он отрабатывает только один раз. При последующем входе в систему того же пользователя вы его уже не увидите, зато если в систему зайдет другой пользователь, для него весь процесс повторится.

Эту особенность Active Setup можно использовать в том случае, когда необходимо однократно выполнить какое либо действие, например произвести настройку пользовательского окружения для нового пользователя или установить\обновить ПО.

Настройки Active Setup находятся в реестре, в разделе HKLM\Software\Microsoft\Active Setup\Installed Components. Для каждого компонента есть отдельный раздел с именем, состоящим из уникального идентификационного номера (GUID). В разделе есть несколько параметров, из которых нас интересуют следующие:

(по умолчанию) — название компонента, которое отображается при выполнении;
StubPath — команда, которая должна быть выполнена. Здесь можно указать команду, скрипт (cmd, vbs или powershell) или исполняемый файл;
Version — версия компонента в текстовом формате, элементы разделены запятыми (напр. 1,0,00).

раздел реестра Active Setup

 

Принцип работы Active Setup прост. При входе пользователя система сравнивает содержимое разделов HKLM\Software\Microsoft\Active Setup\Installed Components и HKCU\Software\Microsoft\Active Setup\Installed Components. Для каждого раздела в HKLM должна быть копия с тем же GUID в HKCU. Дальше есть три варианта развития событий:

1.  Если копии нет, то выполняется команда, указанная в StubPath, после чего в HKCU создается раздел с тем же GUID и прочими параметрами.
2. Если копия есть, то сравнивается значение параметра Version. Если версия в HKCU младше, чем в HKLM, то задание отрабатывает повторно, после чего номер версии в HKCU обновляется.
3. Если же раздел с одинаковым GUID есть и в HKLM и в HKCU и номер версии у них совпадает, то значит компонент уже отработал для данного пользователя и запускать его не требуется.

Создание нового компонента

Первое, что нужно для создания собственного компонента — это GUID. Сгенерировать его можно с помощью PowerShell, командой:

[System.Guid]::NewGuid()

создание нового GUID

 

Затем в разделе HKLM\Software\Microsoft\Active Setup\Installed Components создаем подраздел с новым GUID и добавляем в него необходимые параметры Version и StubPath, а также при желании указываем имя компонента. Для примера я добавил в StubPath простенький cmd-скрипт, который выводит строку текста и ждет нажатия клавиши.

создание нового раздела в Active Setup

 

И при следующем входе в систему наш скрипт отрабатывает вот таким образом.

результат работы Active Setup

Используя GPO

Для централизованного управления Active Setup можно задействовать групповые политики. Для этого есть специальный инструмент «Предпочтения групповой политики» (Group Policies Preferences), который в числе прочего позволяет редактировать реестр. Порядок действий такой:

Сначала открываем редактор и создаем новый GPO. Открываем его на редактирование и переходим в раздел Computer Configuration\Preferences\Windows Settings\Registry. Кликаем правой клавишей и в контекстном меню переходим на New -> Registry Item.

Group Policies Preferences, раздел Registry

 

Задаем все необходимые параметры ключа (путь, имя, тип), в качестве действия указываем создание (Create).

окно создания нового ключа реестра в Group Policies Preferences

 

Таким же образом создаем все необходимые ключи. Затем полученную GPO привязываем к подразделению (OU). Теперь после применения политики задание отработает на всех компьютерах, находящихся в этом OU. А если потребуется перезапустить задачу, то достаточно отредактировать версию компонента (например с 1,0,0 на 1,0,1) и задача отработает повторно.

Ключи реестра в Group Policies Preferences

 

И в заключение одна особенность, которую нужно учитывать при использовании ActiveSetup. Дело в том, что ActiveSetup запускается перед загрузкой рабочего стола. Команды стартуют синхронно, при этом на время их выполнения вход в систему блокируется. И если созданное вами задание по какой либо причине не сможет отработать, то войти в систему не удастся. Поэтому перед применением скрипт\приложение стоит тщательно оттестировать.

 
 
Комментарии

Пока нет комментариев.