Главная страницаОбратная связьКарта сайта

УПРАВЛЕНИЕ РЕЕСТРОМ.Расширение существующих политик


Отнеситесь к созданию ADM-файла, как к созданию небольшой программы. Ведь, по сути, так оно и есть: ADM-фанл — это небольшой сценарий, а редактор политик — интерпретатор, обрабатывающий этот сценарий.

 Комментарии

В ADM-файлах, как и в коде программы, могут быть комментарии. Комментарием считается строка, начинающаяся с точки с запятой или с двух прямых слешей: ;   Комментарий //  это  тоже  комментарий

Комментарии могут помещаться как в начале, так и в конце строки:

; будем определять политику пользователя      CLASS USER CATEGORY Мои политики   // определяем категорию
 Строковые константы

Вы можете использовать строковые константы так, как было показано в листинге 17.1. Но если строка содержит большое количество символов и в ADM-файле предполагается повторить ее несколько раз, можно создать секцию [strings] и поместить в нее строковые константы. Секция [strings) помещается в самом конце ADM-файла, как это показано в следующем примере: POLICY !!Policy_Name ;   константа  Policy_name определена в  секции   [strings]

[strings]

; Обратите внимание: в секции strings

; строковые константы описываются

; без предваряющих символов !!

; Также обратите внимание,

; что строка должна быть заключена в двойные кавычки

Policy_Name=MoH политика

 Ключевое слово CLASS

Каждый ADM-файл должен начинаться служебным словом CLASS, за которым следует тип политики, описываемой в ADM-файле: при описании общесистемной политики (параметры реестра будут записываться в раздел HKLM) нркно указать имя класса machine, а при задании пользовательской политики (параметры реестра будут записываться в раздел HKCU) — должно быть указано имя класса user:

CLASS  MACHINE;   общесистемная  политика CLASS USER        ;   пользовательская политика

В одном ADM-файле может быть несколько ключевых слов class:

CLASS MACHINE

; здесь описываем общесистемные политики

CLASS USER

; тут описываем пользовательские политики

 CATEGORY: определение категорий

Сразу после определения класса политики должно следовать служебное слово category. Если class определяет, в каком разделе редактора политик должна находиться наша политика — Конфигурация компьютера или Конфигурация пользователя, — то category определяет подраздел (категорию) выбранного раздела.

Описывается категория так:

CATEGORY имя_категории ; Описание политик END CATEGORY

Каждая категория может содержать ноль или больше политик. Обычно если категория не содержит политик, то она содержит подкатегории (смысла в пустой категории нет). Вот пример описания подкатегории:

CATEGORY Категория

CATEGORY Подкатегория 1

; политики

END CATEGORY

CATEGORY Подкатегория 2

; политики

END CATEGORY END CATEGORY

Определение политик

Политики определяются с помощью служебного слова POLICY. Полный синтаксис определения политик выглядит так:

POLICY лмя_гюлитики

[KEYNAME имя_ключа]

EXPLAIN подсказка

VALUENAME имя_параметра

[описание средств редактирования значений параметра]

END POLICY

Разберемся, что есть что. Имя политики можно указать явно, а можно использовать строку из раздела [strings].

Ключевое слово keyname задает имя раздела реестра, в который будут записаны параметры, изменяемые политикой. HKCU или HKLM указывать не нужно — выбор корневого раздела реестра осуществляется с помощью ключевого слова class, keyname можно описать и в категории, если все политики, относящиеся к одной категории, изменяют значения, которые находятся в одном и том же разделе реестра, например: CATEGORY Категория KEYNAME   Software\Policies

CATEGORY Подкатегория 1 ; политики

END CATEGORY

CATEGORY Подкатегория 2 ; политики

END CATEGORY END CATEGORY

Ключевое слово valuename определяет имя параметра, который будет изменен политикой. С помощью служебного слова explain можно указать краткое описание для политики.

А теперь поговорим о самом интересном: о значениях параметров. Как уже отмечалось, если политика простая (то есть параметр может принимать значения включено и выключено), то вам вполне хватит ключевых слов valueon иvalueoff:

VALUEON [NUMERIC] значение1 VALUEOFF [NUMERIC] значение2

Если вы включаете политику, то в реестр будет занесено первое значение (указанное в valueon), а если выключаете, то в реестр помещается второе значение (valueoff). Если же вы выбираете Не задан, то параметр, соответствующий политике, удаляется из реестра.

По умолчанию редактор политик считает, что значения параметра — строковые (REG_SZ), но вы можете указать модификатор numeric для изменения типа параметра на REG_DWORD, например: //  строковые  значения VALUEON   yes VALUEOFF   no //  целые  значения VALUEON  1 VALUEOFF   0

Ho valueon и valueoff подходят только для самых простых значений. Если же значения параметра сложнее, нужно использовать другие средства, о которых мы поговорим в следующих разделах книги.

Ключевое слово actionlist

Для включения некоторых функций нужно изменить сраз\ несколько параметров реестра. В этих случаях вам пригодится ключевое слово actionlist, позволяющее группировать настройки.

Чаще всего используются варианты actionlist — actionliston и actionlistoff. Первый задает список значений, которые нужно изменить при включении политики, а второй — список значений, которые нужно изменить при выключении политики.

Общий синтаксис выглядит так:

ACTIONLIST

[KEYNAME имя_ключа]

VALUENAME имя_параметра

VALUE   [модификатор типа]   значение

end actionlist

Примечание

Модификатор типа позволяет задать тип параметра. По умолчанию используется REG_SZ, но вы можете изменить его на REG_DWORD, указав в качестве модификатора numeric.

В качестве иллюстрации вышеизложенного рассмотрим небольшой пример (листинг 17.2).


Как видно из листинга 17.2, при включении политики в раздел Software\ Policies добавляются два параметра — First и Second типа REG_SZ со значением 1 (рис. 17.9).



Рис. 17.9. Параметры First и Second

Ключевое слово part: создание элементов интерфейса

Возможностей actionlist иногда бывает не достаточно. Что делать, если нужно указать в реестре произвольное значение: значение, введенное пользователем? В этом случае нам может помочь служебное слово part. С его помощью вы можете организовать поля для ввода текста, выпадающие списки, переключатели и другие элементы интерфейса.

Общий синтаксис использования служебного слова part следующий:

PART имя тип

Ключевые слова

[KEYNAME имя_ключа]

[DEFAULT значение по умолчанию]

VALUENAME имя

END PART

Разберемся, что есть что:

   имя — может быть произвольным; оно будет указываться в окне настройки;
 тип — определяет элемент графического интерфейса:

•       edittext — поле для ввода, в которое можно вводить как буквы, так и цифры. Значение имеет тип REG_SZ или REG_EXPAND_SZ;

•       numeric — поле, предназначенное только для ввода цифр;

•       text — используется для создания подсказок в окне настройки;

•       checkbox — отображает независимый переключатель (флажок). Возвращает значение I при установленном флажке и 0 — при снятом;

•       сомвовох — список значений с возможностью ввода собственного значения;

•       listbox — отображает список с кнопками Добавить/Удалить (используются для добавления и удаления элементов списка);

 

□     ключевые слова — зависят от выбранного типа элемента интерфейса, мы их рассмотрим чуть позже;

□     ключевое слово default — задает значение по умолчанию. При включении политики редактор политик заполняет элемент интерфейса этим значением;

□     ключевое слово valuename — задает имя параметра реестра. Тип, и значение параметра зависят от типа элемента интерфейса пользователя.

Рассмотрим небольшой пример (листинг 17.3).

г Листинг 17,3. Пример организации окна с полем для ввода

POLICY Третья политика KEYNAME Software\Policies PART Пример EDITTEXT

DEFAULT Текст по умолчанию VALUENAME Test END PART END POLICY

В окне редактора политик соответствующее окно настройки будет выглядеть, как показано на рис. 17.10.


Рис. 17.10. Пример организации окна с полем для ввода

Теперь рассмотрим создание других элементов интерфейса для редактирования значения параметра. Флажок (checkbox) определяется так:

PART имя CHECKBOX DEFCHECKED VALUENAME MyValue END PART

Если указано ключевое слово defchecked, то флажок установлен, а соответ-| ствующему параметру реестра присвоено значение I; если не указано — флажок снят, а параметру передано значение 0. Однако вы можете задать и другие значения, соответствующие включенному и выключенному состоянию флажка (см. листинг 17.4).


Рис. 17.11. Окно настройки с флажками

Все остальные ключевые слова, кроме valuename, указывать не обязательно, но мы все же их рассмотрим:

□     default — задает значение по умолчанию;

□     expandabletext — создает параметр реестра типа REG_EXPAND_SZ вместо REG_SZ;

D maxlength — позволяет задать максимальную длину значения;

О nosort — позволяет отключить сортировку вариантов списка.

Небольшой пример:

PART Параметр СОМВОВОХ

SUGGESTIONS

Вариант1 Вариант2 Третий вариант

END SUGGESTIONS

VALUENAME MyString END PART



Рис. 17.12. Пример использования СОМВОВОХ

Пример использования списка СОМВОВОХ приведен на рис. 17.12.

Ближайшим родственником списка СОМВОВОХ является список LISTBOX. Его синтаксис выглядит так:

PART  имя  LISTBOX

[EXPANDABLETEXT]

[NOSORT]

[ADDITIVE]

[EXPLICITVALUE|VALUEPREFIX префикс] END PART

С первыми двумя параметрами списка мы уже знакомы, поэтому остановимся на следующих параметрах:

□ additive — перезаписывает содержимым списка значения, уже имеющиеся в реестре;

 explicitvalue — позволяет указать имя параметра и его значение. Очень удобный вариант;

D valueprefix — позволяет задать префикс имен параметров. Если вы зададите префикс Start, то будут сгенерированы имена параметров Start 1, Start2 и т. д.

Наверное, вы заметили, что для listbox не нужно указывать valuename. Как вы уже догадались, этот список работает с целым разделом реестра, а не с одним параметром, поэтому ключевое слово valuename просто не нужно. Пример использования listbox приведен в листинге 17.5.

! Листинг 17.5. Политика для редактирования всех значений

POLICY Редактирование всех значений

KEYNAME Software\Policies

EXPLAIN Список для редактирования всех значений из Sofcware\Policies

PART Параметры LISTBOX

EXPLICITVALUE END PART END POLICY

Как выглядит полученный listbox, показано на рис. 17.13.

Следующий тип графического интерфейса — numeric — позволяет создать поле для ввода целых значений со стрелками уменьшения/увеличения значения. Вот его синтаксис:

PART имя NUMERIC

[DEFAULT значение по умолчанию]

[МАХ максимальное значение]

[MIN минимальное значение]

[SPIN шаг]

[TXTCONVERT]

VALUENAME имя_параметра END PART

Параметры min и мах указывают соответственно минимальное и максимальное значения. Параметр spin определяет шаг — значение, на которое будет увеличиваться или уменьшаться счетчик, по умолчанию он равен 1. Если указать txtconvert, to вместо параметра реестра типа REG_DWORD будет использоваться параметр типа REG_SZ. Пример использования numeric:

PART Температура NUMERIC MAX 100 MIN 0 VALUENAME имя_параметра

END PART



Рис. 17.13. Использование LISTBOX

Нам осталось рассмотреть последний элемент пользовательского интерфейса — это text. Он предназначен для ввода в окно настройки статического (постоянного) текста, который может также использоваться в качестве дополнительной подсказки. Данный элемент имеет следующий синтаксис:

PART текст TEXT END PART

Поскольку текст подсказки может быть длинный, целесообразно поместить его в секцию [strings]: PART   !!Message TEXT END  PART

[strings]

Message=TeKCT подсказки, отображаемый в окне настройки

Отладка

Что произойдет, если вы допустите синтаксическую ошибку? Ничего страшного. Вы просто получите соответствующее сообщение с подробным описанием ошибки и номером строки, где она допущена (рис. 17.14). При этом файл с административным шаблоном не будет загружен, зато будут загружены все остальные ADM-файлы, в которых нет ошибок.



Рис. 17.14. Ошибка

Как видите, в строке 58 я вместо end part написал endpart, пропустив пробел. Редактор политик сообщил суть ошибки, номер строки и ожидаемые значения. Как видите, отладка ADM-файлов проще, чем вы могли подумать! Главное, на что нужно обратить внимание при создании ADM-файлов — это имена ключей и параметров реестра, иначе будете долго удивляться, почему ошибок нет, а нужная политика не работает.



Обсудить статью на форуме


Если прочитаная статья из нашей обширной энциклопедия компьютера - "УПРАВЛЕНИЕ РЕЕСТРОМ.Расширение существующих политик", оказалась полезной или интересной, Вы можете поставить закладку в социальной сети или в своём блоге на данную страницу:

Так же Вы можете задать вопрос по статье через форму обратной связи, в сообщение обязательно указывайте название или ссылку на статью!
   


Copyright © 2008 - 2017 Дискета.info