Специальные административные шаблоны для управления приложениями независимых поставщиков
Широко известны способы применения групповой политики для управления клиентами Windows XP Professional Edition и Windows 2000 Professional. Но не все слышали о специальных административных шаблонах, благодаря которым широкая функциональность управления Group Policy может применяться не только к стандартным параметрам групповой политики, связанным с операционной системой, но и к другим объектам. В данной статье рассказывается о достоинствах, принципах работы и некоторых сложностях использования специальных административных шаблонов. Затем мы подробно рассмотрим процесс объединения изолированных приложений в рамках общего управления групповой политикой.
Преимущества специальных административных шаблонов
Обслуживать пользователей, несомненно, проще, если все они применяют единый подход к работе с приложением. Во многих случаях специальные административные шаблоны способствуют формированию более однородной пользовательской среды, даже если приложением можно управлять через обычные групповые политики. Если конкретный параметр в приложении приводит к недоразумениям и обращениям в службу поддержки, с помощью специальных административных шаблонов можно присвоить параметру соответствующее значение. В частности, можно ограничить доступ или скрыть сложные функции приложения. Специальные административные шаблоны можно применять и для записи информации о приложениях в реестр.
Групповые политики на базе реестра
Административные шаблоны используются в групповой политике для реализации политик на базе реестра, поэтому любые параметры, заданные объектом групповой политики (GPO), хранятся в реестре. Эти параметры реестра, называемые System Policy в Windows NT 4.0, составляют большинство политик, реализуемых через групповую политику.
Все изменения, вносимые с использованием административного шаблона, предоставляемого поставщиком, хранятся в одном из четырех зарезервированных разделов реестра: HKEY_LOCAL_MACHINESOFT-WAREPolicies, HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows Current-VersionPolicies, HKEY_CURRENT_USERSoftwarePolicies или HKEY_CURRENT_USERSoftwareMicrosoft WindowsCurrentVersionPolicies. Эти области имеют специальные разрешения, которые не позволяют пользователям самовольно изменять разделы и параметры внутри разделов. Еще одно важное отличие этих разделов заключается в том, что любой подраздел, созданный объектом GPO, при удалении GPO удаляется из реестра. Параметры, хранящиеся в них, являются временными и удаляются каждый раз при очередном применении GPO.
Такая система резервирования разделов реестра для важных параметров успешно работает с операционными системами Windows и приложениями, спроектированными с учетом групповой политики. Но для некоторых других приложений полезно изменить разделы реестра, которые находятся вне выделенных областей. Microsoft позволяет изменять разделы реестра в других областях, но при этом необходимо помнить о некоторых «подводных камнях» и пользоваться проверенными на практике правилами.
Как отмечалось выше, изменения разделов в соответствии с правилами Microsoft — временные. Но изменения разделов в других областях (о которых пойдет речь в данной статье) — постоянные, они останутся в реестре даже после удаления GPO, который произвел эти изменения. Такие изменения известны как «разрисовывание» (tattooing) реестра. Более того, хотя параметры реестра, назначенные GPO, могут быть изменены вручную или программой, при следующем обновлении GPO им будут возвращены значения, присвоенные объектом GPO. С технической точки зрения параметры, заданные с помощью специальных административных шаблонов, представляют собой набор настроек (preference), а не объекты GPO.
Еще одно обстоятельство, которое необходимо учитывать при назначении параметров, заключается в том, что пользовательский интерфейс управляемой программы не всегда приспособлен для четкого отображения вносимых изменений. В приложениях, спроектированных в расчете на управление групповыми политиками, кнопки и пункты меню, связанные с параметрами групповой политики, могут быть отмечены серым цветом или скрыты. Необходимо индивидуально тестировать поведение каждого приложения, для управления которым предполагается применять групповые политики.
Первое практическое требование при работе со специальными административными шаблонами — знание реестра и понимание потенциальных последствий ошибок. Проектирование специальных административных шаблонов — задача не для начинающих. Кроме того, не следует просто приспосабливать для конкретных задач административные шаблоны, поставляемые вместе с операционной системой или приложением. Лучше скопировать существующий шаблон и использовать копию как основу для нового шаблона с другим именем. Существующие административные шаблоны перезаписываются при обновлении операционной системы, например применении пакетов обновлений. Наконец, не стоит изобретать велосипед. Прежде чем приступить к созданию шаблона для управления группой параметров, необходимо убедиться, что данная область не охвачена каким-нибудь другим шаблоном.
Административные шаблоны для управления Windows (в том числе Windows Media Player, WMP) можно получить по адресу. Другие административные шаблоны входят в состав загружаемых наборов инструментов. Например, в Microsoft Office 2000 Resource Kit входят шаблоны System Policy для управления приложениями Office 2000. Информацию о них можно найти по адресу. Они входят в базовый инструментальный комплект Microsoft Office 2000 Resource Kit (orktools.exe), который можно загрузить из узла с адресом.
Основные принципы административных шаблонов
Административные шаблоны — текстовые файлы с расширением .adm, хранящиеся в папке %systemroot%inf. Загрузив эти шаблоны в оснастку Group Policy Editor консоли управления Microsoft Management Console (MMC), можно увидеть параметры, которые настраиваются и применяются администратором. Поначалу разобраться в файле .adm нелегко. Но, освоив базовые компоненты, ключевые слова и способы их взаимодействия, можно научиться разбираться в существующих шаблонах и составлять собственные.
В языке .adm насчитывается восемь основных компонентов, в каждом из которых используется группа ключевых слов, определяющих возможности редактирования GPO в оснастке Group Policy Editor. В тестовом Administrative Template в листинге 1 показано, как управлять параметрами для утилиты WinZip компании WinZip Computing с использованием компонентов и широко применяемых ключевых слов. Чтобы оценить эффект применения специального шаблона, можно загрузить его, следуя инструкциям в разделе «Тест, тест, тест». Разобраться в механизме действия тестовых GPO будет проще, если в системе инсталлирована программа WinZip. 21-дневную пробную версию WinZip можно загрузить с сайта. Восемь компонентов — Comments, Strings, CLASS, CATEGORY, POLICY, PART, ITEMLIST и ACTIONLIST.
Comments — используются для документирования .adm-файла. Каждый комментарий начинается с точки с запятой. Комментарии могут располагаться на отдельных строках или следовать за оператором, представленным компонентом или ключевым словом. Строки комментариев (выделенные черным текстом в тестовом .adm-файле) описывают функциональность различных разделов шаблона.
Strings — короткие, легкоуправляемые тэги для элементов текста. Strings определяются в конце .adm-файла, в разделе [strings]:
stringname=«value»
Компоненты и ключевые слова в основном теле шаблона указывают на Strings с помощью двух предшествующих восклицательных знаков (!!), например
!!stringname
Раздел [strings] (оранжевый текст в тестовом .adm-файле) может быть длинным и трудным для чтения, особенно если строки содержат подробные пояснения политики. Поэтому продуманный метод организации строк облегчит редактирование и поиск неисправностей в шаблоне.
Компонент CLASS определяет, будет ли GPO показан в узле User Configuration или в узле Computer Configuration оснастки Group Policy Editor. Единственные допустимые значения для CLASS — COMPUTER и USER. В тестовом .adm-файле единственный оператор CLASS (коричневый текст) указывает, что параметры данного шаблона применяются к узлу User Configuration. Значение CLASS и узел также связаны с разделом реестра, в котором будут проведены изменения. Класс USER связан с параметрами раздела HKEY_CURRENT_USER; класс COMPUTER влияет на параметры раздела HKEY_LOCAL_MACHINE.
Компонент CATEGORY позволяет назначить имя узла оснастки Group Policy Editor, в котором будут отображаться параметры GPO. Имя узла CATEGORY появляется в узле Administrative Templates узла User Configuration или Computer Configuration. Вкладывая несколько операторов CATEGORY друг в друга, можно упорядочить структуру параметров. Первые два оператора CATEGORY (выделены пурпурным текстом в тестовом .adm-файле) формируют верхние узлы для параметров WinZip. Три следующие категории (красный, зеленый и синий текст) находятся под двумя первыми узлами. На экране 1 показано, как структура CATEGORY тестового шаблона WinZip выглядит в оснастке Group Policy Editor. С помощью ключевого слова KEYNAME на уровне CATEGORY можно указать путь к разделу реестра, на который будут воздействовать все дочерние категории, политики и элементы, если эти элементы не определены явно в другом KEYNAME. В тестовом шаблоне имеется KEYNAME для каждой CATEGORY, применяемой к каждой политике внутри данной категории. Единственное исключение — последняя политика, для которой требуется ключевое слово KEYNAME, отличное от заданного для категории.
Экран 1. Структура CATEGORY тестового шаблона |
В компоненте POLICY задаются собственно изменения, производимые GPO. С использованием таких ключевых слов, как PART, ITEMLIST, ACTIONLIST и другие, можно приспособить интерфейс к параметрам политики.
Компонент PART определяет объекты, которые составляют пользовательский интерфейс для редактирования GPO в оснастке Group Policy Editor, в частности текстовые поля, флажки и раскрывающиеся списки. Ключевое слово — CHECKBOX, COMBOBOX, DROPDOWNLIST, LISTBOX, EDITTEXT, TEXT или NUMERIC — задает тип используемого объекта. В тестовом .adm-шаблоне используется несколько типов объектов. Посмотрите, как ключевые слова, определяющее тип объекта, используются в шаблоне, и обратите внимание на результаты в оснастке Group Policy Editor. Более подробную информацию об использовании объектов этих типов можно найти в приложении Appendix. A к предназначенному для разработчиков документу «Implementing Registry-Based Group Policy» можно обратиться по адресу.
Компонент ITEMLIST с типом объекта DROPDOWNLIST задает список допустимых вариантов для данного параметра. Этот метод обеспечивает целостность данных, вводимых в оснастке Group Policy Editor. В тестовом шаблоне .adm показано, как использовать ITEMLIST и DROPDOWNLIST для политики OpenLocation в категории Paths.
Компонент ACTIONLIST позволяет определить один или несколько разделов реестра, в соответствии с состоянием элемента управления. Например, за объектом типа DROPDOWNLIST могут следовать операторы ACTIONLIST, определяющие серию изменений в разделе реестра, в зависимости от выбранного пункта раскрывающегося списка.
В тестовом шаблоне .adm использовано несколько дополнительных ключевых слов. Например, для корректного функционирования в конце большинства компонентов необходимо ключевое слово END. Это ключевое слово встречается в таких операторах, как END PART и END POLICY. EXPLAIN позволяет дать текстовое описание GPO и способов его применения; на вкладке Explain текст отображается в процессе редактирования GPO. VALUENAME — имя раздела реестра, значение которого будет изменено с использованием данного GPO. Ключевое слово DEFAULT применяется для задания стандартных значений, заполняемых пользователем полей объекта GPO. По умолчанию объект CHECKBOX записывает значение первого типа REG_DWORD, если флажок установлен, но WinZip хранит параметры, заданные флажками, в строковых переменных. Шаблон использует ключевые слова VALUEON и VALUEOFF с политиками Wizard и ShowTips для интерпретации состояния флажка и записи соответственно отформатированных значений реестра.
Тест, тест, тест
Завершив подготовку или загрузив тестовый .adm-файл и скопировав его в папку %systemroot%inf, можно запустить оснастку Group Policy Editor и загрузить новый шаблон, чтобы познакомиться с его работой. Для работы с Group Policy Editor необходимо зарегистрироваться с административными полномочиями. Из меню Start нужно перейти в окно Run, ввести mmc и щелкнуть на кнопке OK. Из меню «файл» следует выбрать пункт Add/Remove Snap-in и щелкнуть на кнопке Add. Затем необходимо выбрать оснастку Group Policy Editor и щелкнуть на кнопке Add. Я рекомендую в первую очередь испытать свое произведение в качестве локального GPO, прежде чем применять его в рабочем домене. Поэтому поначалу следует оставить стандартный вариант Local Computer и щелкнуть на кнопке Finish. Затем нужно закрыть диалоговое окно Add Standalone Snap-in и нажать OK в диалоговом окне Add/Remove Snap-in.
Чтобы добавить новый шаблон, следует щелкнуть правой кнопкой мыши на узле Administrative Templates в разделе Computer Configuration или User Configuration и выбрать пункт Add/Remove Templates. По щелчку на кнопке Add на экране должен появиться список доступных .adm-файлов. Выберите новый специальный шаблон и щелкните на кнопке OK. Закройте окно Add/Remove Templates, и благодаря специальному шаблону в оснастке Group Policy Editor появятся новые доступные категории. К сожалению, отдельные параметры могут оказаться скрытыми. Таким образом Microsoft пытается защитить реестр от повреждений. Чтобы просмотреть вновь созданные параметры, можно воспользоваться окном Filtering оснастки Group Policy Editor. Чтобы открыть диалоговое окно (экран 2), следует выбрать пункт Filtering из меню View и сбросить флажок Only show policy settings that can be fully managed.
Экран 2. Фильтр политик шаблонов Administrative Templates |
Конечно, перед применением любые параметры групповой политики необходимо тестировать, но я рекомендую особенно тщательно проверять параметры, внесенные с помощью специальных административных шаблонов. Необходимо понимать все изменения, внесенные в разделы реестра, и их влияние на приложение в различных ситуациях. Например, следует выяснить, что происходит, когда пользователь приложения изменяет параметры, настроенные шаблоном, что случается с параметрами после завершения пользователя сеанса, перезагрузки системы и изменения или удаления GPO. Если шаблон GPO позволяет успешно управлять приложением без неприятных побочных эффектов, то можно использовать шаблон для изменения доменного GPO. Этот процесс аналогичен описанному выше, но вместо стандартного варианта Local Computer (как было рекомендовано в первом абзаце данного раздела) следует щелкнуть на кнопке Browse. Затем можно просмотреть домен и выбрать GPO для редактирования.
Поэтапный подход
Лучший совет, который я могу дать, — начинайте с простого. Нужно разбить приложение и его интерфейс на составные части, чтобы определить параметры, которые требуется изменить, и вводить изменения в шаблон по одному GPO за один раз. Не следует запускать новый GPO до тех пор, пока предыдущий объект не будет работать корректно. Разделы и параметры, подлежащие изменению, можно отыскать с помощью такого инструмента мониторинга реестра, как Regmon (бесплатная программа компании Sysinternals).
Применение групповой политики — один из нескольких способов управления Windows и некоторыми приложениями Windows. Если групповая политика уже применяется для управления клиентскими машинами на предприятии, то специальные административные шаблоны могут предоставить эффективный способ управления приложениями, не имеющими соответствующего интерфейса.
Эд Рот — редактор Windows & .NET Magazine. С ним можно связаться по адресу: eroth@winnetmag.com
Ресурсы MICROSOFT
«Implementing Registry-Based Group Policy» white paper
Документация по шаблонам Office 2000 System Policy
Шаблоны Office 2000 System Policy
Административные шаблоны Windows