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 простий. При вході користувача система порівнює вміст розділів 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 ()
Потім в розділі HKLM \ Software \ Microsoft \ Active Setup \ Installed Components створюємо підрозділ з новим GUID і додаємо в нього необхідні параметри Version і StubPath, а також при бажанні вказуємо ім'я компонента.Для прикладу я додав в StubPath простенький cmd-скрипт, який виводить рядок тексту і чекає натиснення клавіші.
І при наступному вході в систему наш скрипт відпрацьовує ось таким чином.
Використовуючи GPO
Для централізованого управління Active Setup можна задіяти групові політики.Для цього є спеціальний інструмент «Уподобання групової політики» (Group Policies Preferences), у якому серед іншого дозволяє редагувати реєстр. Порядок дій такий:
Спочатку відкриваємо редактор і створюємо новий GPO. Відкриваємо його на редагування і переходимо в розділ Computer Configuration \ Preferences \ Windows Settings \ Registry.Натискаємо правою клавішею і в контекстному меню переходимо на New -> Registry Item.
Задаємо всі необхідні параметри ключа (шлях, ім'я, тип), в якості дії вказуємо створення (Create).
Таким же чином створюємо всі необхідні ключі. Потім отриману GPO прив'язуємо до підрозділу (OU).Тепер після застосування політики завдання відпрацює на всіх комп'ютерах, які перебувають в цьому OU. А якщо буде потрібно перезапустити завдання, то досить відредагувати версію компонента (наприклад з 1,0,0 на 1,0,1) і завдання відпрацює повторно.
І на закінчення одна особливість, яку потрібно враховувати при використанні ActiveSetup.Справа в тому, що ActiveSetup запускається перед завантаженням робочого столу. Команди стартують синхронно, при цьому на час їх виконання вхід в систему блокується. І якщо створене вами завдання по якійсь причині не зможе відпрацювати, то увійти в систему не вдасться. Тому перед застосуванням скрипт \ додаток варто ретельно оттестировать.П>.