Product SiteDocumentation Site

Глава 11. Расширение возможностей ГП

11.1. Схема административных шаблонов (ADMX)
11.1.1. Структура ADMX-файла
11.1.2. Структура ADML-файла
11.1.3. Связывание информации из ADMX и ADML-файлов
11.1.4. Рекомендации для создания ADMX-файлов
11.2. Разработка новой политики
11.2.1. Пример для механизма Systemd
11.2.2. Пример для механизма Control
11.2.3. Пример для механизма Gsetting
11.2.4. Пример для механизма Polkit

11.1. Схема административных шаблонов (ADMX)

Административные шаблоны представляют собой два типа XML-файлов:
  • независимый от языка файл (ADMX), описывающий структуру категорий и параметры политики административных шаблонов, отображаемых в редакторе управления групповыми политиками;
  • набор зависящих от языка файлов (ADML), которые предоставляют локализованные части, отображаемые в редакторе управления групповыми политиками. Каждый ADML-файл представляет один язык, для которого требуется поддержка.
Каждому ADMX-файлу должен соответствовать свой ADML-файл с таким же именем.

11.1.1. Структура ADMX-файла

Структура ADMX-файла
ADMX-файл состоит из семи разделов:
  • XML-объявление. XML-объявлением является заголовок файла, который не рассматривается в качестве фрагмента ADMX-документа, но является его необходимой частью и помещается в начале файла для того, чтобы указать на то, что это XML-документ;
  • policyDefinitions. Элемент, который содержит все остальные элементы ADMX-файла;
  • policyNamespaces. Этот элемент определяет уникальное пространство имён для данного ADMX-файла. Данный элемент также обеспечивает сопоставление с пространствами имен во внешних файлах, если ADMX-файл ссылается на элементы category, определенные в другом ADMX-файле;
  • resources. Определяет требования к ресурсам определенного языка и минимальную необходимую версию связанного ADML-файла;
  • supportedOn. Определяет ссылки на локализованные текстовые строки, определяющие ОС или приложения, на которые влияет определенный параметр политики;
  • categories. Содержит список категорий, в которых параметр политики текущего ADMX-файла будет отображаться в редакторе объектов групповой политики;
  • policies. Содержит определения отдельных параметров политики.
XML-объявление не считается частью документа ADMX. Однако рекомендуется начинать файл ADMX с объявления XML, чтобы указать, что это документ XML.
Синтаксис XML-объявления:
<?xml version="<версия>" encoding="<кодировка"?>
где:
  • version — версия XML, используемая в документе (обязательный атрибут). В настоящее время поддерживается только версия 1.0;
  • encoding — информация о кодировке символов, используемая анализаторами XML-документов. ADMX-файлы всегда имеют кодировку UTF-8.

Примечание

XML-объявление не должно предваряться комментариями, пробелами или другими инструкциями по обработке XML.
Элемент policyDefinitions — это элемент документа для ADMX-файла, который определяет набор параметров политики реестра. Элемент policyDefinitions также объявляет пространство имен по умолчанию для всех элементов в ADMX-файле.
Синтаксис элемента policyDefinitions:
<policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
revision="<MajorVerison.MinorVersion>" schemaVersion="<MajorVerison.MinorVersion>"
xmlns=" http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" >
  <policyNamespaces> … </policyNamespaces>
  <supersededAdm> … </supersededAdm>
  <resources> … </resources>
  <supportedOn> … </supportedOn>
  <categories> … </categories>
  <policies> … </policies>
</policyDefinitions>
Атрибуты элемента policyDefinitions описаны в таблице Атрибуты элемента policyDefinitions.

Таблица 11.1. Атрибуты элемента policyDefinitions

Атрибут
Обязательный
Описание
xmlns:xsd
Нет
Обозначение элементов и типов данных, используемых в схеме пространства имен
xmlns:xsi
Нет
Обозначение пространства имён экземпляра XML-схемы, предоставленной в самом пространстве
revision
Да
Версия ADMX-файла, которая в большинстве случаев предназначена для отслеживания внесенных изменений.
Синтаксис:
revision="<MajorVerison.MinorVersion>"
где MajorVersion и MinorVersion являются номерами версии, например, revision="1.0"
schemaVersion
Да
Указывает версию схемы, используемую средствами работы с ГП для определения того, поддерживается ли ими формат конкретных ADMX-файлов. Синтаксис этой команды идентичен синтаксису revision
xmlns
Нет
Пространство имен схемы ГП

Примечание

Инструменты ГП успешно используют файлы ADMX-файлы, которые не содержат атрибутов xmlns. Но эти атрибуты должны входить в состав ADMX-файла, так как, в противном случае, он может не пройти проверку на правильность формата XML-файла.
Дочерние элементы policyDefinitions описаны в таблице Дочерние элементы policyDefinitions.

Таблица 11.2. Дочерние элементы policyDefinitions

Элемент
Обязательный
Описание
policyNamespaces
Да
Определяет уникальное имя пространства имен политики в файле ADMX, а также любых пространств имен, на которые оно ссылается в других файлах ADMX.
Синтаксис:
<policyNamespaces>
  <target> … </target>
  <using> … </using>
</policyNamespaces>
где:
  • target — определяет уникальное имя пространства имен политики в ADMX-файле (обязательный элемент);
  • using — ссылается на существующую категорию или имя supportOn из другого пространства имен политики.
supersededAdm
Нет
Данный элемент ссылается на имя ADM-файла, заменяемого ADMX-файлом
resources
Да
Определяет требования для ресурсов определенного языка и минимальную необходимую версию связанного ADML-файла.
Синтаксис:
<resources minRequiredRevision="<MajorVerison.MinorVersion>"
fallbackCulture="<language name>"/>
где:
  • minRequiredRevision — минимальный уровень версии соответствующего ADML-файла;
  • fallbackCulture — язык, который будет использоваться, если ни в одном расположении не будет найден соответствующий ADML-файл. Если этот атрибут не указан будет использоваться английский язык.
supportedOn
Нет
Определяет сопоставление ссылки на локализированные строки текста с ОС или приложениями, на которые влияют конкретные параметры политики.
Синтаксис:
<supportedOn>
  <definitions> … </definitions>
</supportedOn>
Элементы definitions содержат информацию о поддерживаемой версии.
categories
Нет
Содержит список категорий, в которых параметр политики текущего ADMX-файла будет отображаться в редакторе управления групповыми политиками.
Синтаксис:
<categories>
  <category> … </category>
</categories>
Элемент category указывает имя уникальной категории, которая будет отображаться в редакторе объектов групповой политики.
policies
Нет
Содержит список определений параметров политики.
Синтаксис:
<policies>
  <policy> … </policy>
</policies>
Дочерний элемент policy соответствует одному параметру ГП, отображаемому в редакторе объектов групповой политики. Элемент policy описывает всю информацию о параметре политики, но включает ссылку на определение параметра.
Синтаксис элемента category:
<category name="<logical or friendly name>"
displayName="$(string.<category text>)"
explainText="$(string.<help text>)">
  <parentCategory> … </parentCategory>
  <seeAlso> … </seeAlso>
  <keywords> … </keywords>
</category>
Атрибуты элемента category описаны в таблице Атрибуты элемента category.

Таблица 11.3. Атрибуты элемента category

Атрибут
Обязательный
Описание
name
Да
Имя, которое будет использоваться для конкретного поддерживаемого приложения и версии
displayName
Да
Ссылка на текстовую строку категории, расположенную в таблице строк ADML-файла
explainText
Нет
Текст объяснения или справки, связанный с конкретной категорией
Дочерние элементы category описаны в таблице Дочерние элементы category.

Таблица 11.4. Дочерние элементы category

Элемент
Обязательный
Описание
parentCategory
Да
Ссылка на родительскую категорию
seeAlso
Нет
Ссылка на другой элемент, который может быть связан с этим. Этот элемент не поддерживается и будет игнорироваться текущей ГП
keywords
Нет
Содержит индексные слова, которые можно использовать для поиска элементов. Этот элемент не поддерживается и будет игнорироваться текущей ГП
Синтаксис элемента policy:
<policy name="<logical or friendly name>"
class="Machine|User|Both"
displayName="$(string.<category text>)"
explainText="$(string.<help text>)"
presentation="$(presentation.<parameter>)"
key="<registry key>"
valueName="<registry valuename>">
  <parentCategory> … </parentCategory>
  <supportedOn> … </supportedOn>
  <enabledValue> … </enabledValue>
  <disabledValue> … </disabledValue>
  <enabledList> … </enabledList>
  <disabledList> … </disabledList>
  <elements> … </elements>
</policy>
Атрибуты элемента policy описаны в таблице Атрибуты элемента policy.

Таблица 11.5. Атрибуты элемента policy

Атрибут
Обязательный
Описание
name
Да
Уникальное имя элемента политики (строка, желательно без пробелов и специальных символов)
class
Да
Определяет, где в каком разделе редактора ГП будет размещён элемент политики: компьютере, пользователе или в обоих узлах. Может принимать значения: «User», «Machine» или «Both»
displayName
Да
Имя, отображаемое в GPUI или оснастке консоли управления ГП. Ссылка на строку, расположенную в ADML-файле
explainText
Нет
Текст объяснения или справки, связанный с элементом политики. Ссылка на строку, расположенную в ADML-файле
presentation
Нет
Подписи параметров политики. Ссылка на строки, расположенные в ADML-файле
key
Да
Местоположение ключа реестра, в котором будет создан параметр реестра
valueName
Нет
Значение реестра, которое будет настроено для этого конкретного элемента политики
Дочерние элементы policy описаны в таблице Дочерние элементы policy.

Таблица 11.6. Дочерние элементы policy

Элемент
Обязательный
Описание
parentCategory
Да
Ссылка на родительскую категорию (раздел, в котором будет отображаться политика)
supportedOn
Нет
Логическое имя supportOn, определенное в элементе supportOn для этого файла (ссылка на поддерживаемые продукты)
enabledValue
Нет
Значение, которое раздел реестра примет, если политика включена.
Синтаксис:
<enabledValue>
  <delete /> | <decimal> … </decimal> | <string> … </string>
</enabledValue>
где:
  • delete — удалить значение или ключ реестра;
  • decimal — десятичное беззнаковое число;
  • string — строка, ограниченая 255 символами.
disabledValue
Нет
Значение, которое раздел реестра примет, если политика отключена. См. описание enabledValue.
enabledList
Нет
Набор значений и ключей реестра, представляющих включенное состояние элемента политики
Синтаксис:
<enabledList defaultKey="<registry subkey>">
  <item> … </item>
</enabledList>
где:
  • атрибут defaultKey — подраздел реестра по умолчанию для всех элементов;
  • item — подраздел реестра со связанным значением.
disabledList
Нет
Набор значений и ключей реестра, представляющих отключенное состояние элемента политики. См. описание enabledList
elements
Нет
Один из пяти типов параметров (см.ниже), которые можно задать в настройке политики
Синтаксис элемента elements:
<elements>
  <boolean> … </boolean>
  <decimal> … </decimal>
  <text> … </text>
  <enum> … </enum>
  <list> … </list>
</elements>
Дочерние элементы elements описаны в таблице Дочерние элементы elements.

Таблица 11.7. Дочерние элементы elements

Элемент
Обязательный
Описание
boolean
Нет
Представляет логический элемент в политике.
Синтаксис:
<boolean id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>">
  <trueValue> … </trueValue>
  <falseValue> … </falseValue>
  <trueList> … </trueList>
  <falseList> … </falseList>
</boolean>
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • trueValue — устанавливает значение на основе истинного условия;
  • falseValue — устанавливает значение на основе ложного условия;
  • trueList — устанавливает значения на основе истинного состояния;
  • falseList — устанавливает значения на основе ложного состояния.
Пример:
<boolean id="OrgXfceThunar_blocker" key="Software\BaseALT\Policies\PolkitLocks" valueName="org.xfce.thunar">
  <trueValue>
    <decimal value="1" />
  </trueValue>
  <falseValue>
    <decimal value="0" />
  </falseValue>
</boolean>
Для элемента boolean в ADMX-файле требуется элемент checkBox с соответствующим идентификатором в ADML-файле.
decimal
Нет
Представляет числовой/десятичный элемент в политике. Число может быть определено для хранения в виде числового или строкового репрезентативного значения
Синтаксис:
<decimal id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>"
  required="true|false"
  minValue="<MinValue>"
  maxValue="<MaxValue>"
  storeAsText="true|false"
  soft="true|false" />
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • атрибут required — требует ввести значение в поле параметра;
  • атрибут minValue — минимально допустимое значение;
  • атрибут maxValue — максисмально допустимое значение;
  • атрибут soft — следует ли перезаписывать существующий подраздел;
  • атрибут storeAsText — если true, сохранить десятичное значение как значение реестра REG_SZ.
Пример:
<decimal id="OrgMateSessionIdleDelay_setter"
  valueName="org.mate.session.idle-delay"
  minValue="1"
  maxValue="2147483647" />
Для элемента decimal требуется элемент decimalTextBox с соответствующим идентификатором в ADML-файле.
text
Нет
Представляет текстовый элемент в политике.
Синтаксис:
<text id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>"
  required="true|false"
  maxLength="<maxLength>"
  expandable="true|false"
  soft="true|false" />
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • атрибут required — требует ввести значение в поле параметра;
  • атрибут maxLength — максисмально допустимое количество символов;
  • атрибут expandable — если true, значение подраздела реестра будет создано как расширяемый строковый тип (REG_EXPAND_SZ) вместо строкового типа (REG_SZ);
  • атрибут soft — следует ли перезаписывать существующий подраздел.
Пример:
<text id="OrgMateBackgroundSecondaryColor_setter"
  valueName="org.mate.background.secondary-color" />
Элемент text допускает строковые значения длиной до 1023 символов.
Для элемента text требуется соответствующий элемент textBox или comboBox с соответствующим идентификатором в ADML-файле.
enum
Нет
Представляет элемент перечисления.
Синтаксис:
<enum id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valueName="<Name>"
  required="true|false">
  <item> … </item>
</enum>
где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valueName — значение реестра, которое будет настроено для этого конкретного элемента политики (обязательный);
  • атрибут required — требует ввести значение в поле параметра;
  • item — представляет набор отображаемых имен с одним значением или набор значений подразделов реестра. Синтаксис:
    <item displayName="$(string.<placeholder for text>)">
      <item> … </item>
    </item>
    
    где displayName — ссылка на отображаемую строку, расположенную в таблице строк ADML-файла.
Пример:
<enum id="OrgMateColorShadingType_setter" required="true" valueName="org.mate.background.color-shading-type">
  <item displayName="$(string.org-mate-background-color-shading-type-horizontal-gradient)">
    <value>
      <string>horizontal-gradient</string>
    </value>
  </item>
  <item displayName="$(string.org-mate-background-color-shading-type-vertical-gradient)">
    <value>
      <string>vertical-gradient</string>
    </value>
  </item>
  <item displayName="$(string.org-mate-background-color-shading-type-solid)">
    <value>
      <string>solid</string>
    </value>
  </item>
</enum>
Элемент enum обычно связан с элементом раскрывающегося списка в редакторе объектов групповой политики.
Для элемента enum требуется элемент dropdownList с соответствующим идентификатором в ADML-файле.
list
Нет
Представляет элемент списка в политике.
Синтаксис:
<list id="<ID>"
  clientExtension="<GUID>"
  key="<RegKey>"
  valuePrefix="<Name>">
  additive="true|false"
  expandable="true|false"
  explicitValue="true|false" >
</ list>

где:
  • атрибут id — сопоставление с элементом (обязательный);
  • атрибут clientExtension — клиентское расширение, которое будет обрабатывать на клиентском компьютере конкретные настройки, представленные элементом;
  • атрибут key — местоположение ключа реестра, под которым будет создан параметр реестра;
  • атрибут valuePrefix — префикс, добавляемый к увеличенному целому числу, создает подраздел реестра, используемый при настройке значений политики (обязательный);
  • атрибут additive — если для этого параметра указано значение true, существующие подразделы не удаляются, а значения, установленные в списке, добавляются к существующим подразделам;
  • атрибут explicitValue — если для этого параметра указано значение true, пользователь должен указать значение подраздела реестра и имя подраздела реестра. В списке отображаются два столбца: один для имени и один для данных;
  • атрибут expandable — если true, значение подраздела реестра будет создано как расширяемый строковый тип (REG_EXPAND_SZ) вместо строкового типа (REG_SZ).
Пример:
<list id="InstallPackagesList"
key="Software\BaseALT\Policies\Packages\Install"
additive="true"/>
Для элемента list требуется элемент listBox с соответствующим идентификатором в ADML-файле.

Примечание

Если элемент elements определен, он должен содержать хотя бы один дочерний элемент. Количество и тип элементов, определенных в ADMX-файле, должны соответствовать элементам presentation, определенным в соответствующем ADML-файле.

11.1.2. Структура ADML-файла

Структура ADML-файла
ADML-файл состоит из пяти разделов:
  • XML-объявление. XML-объявлением является заголовок файла, который не рассматривается в качестве фрагмента ADML-документа, но является его необходимой частью и помещается в начале файла для того, чтобы указать на то, что это XML-документ;
  • policyDefinitionResources. Cодержит объявление пространства имен по умолчанию для всех элементов ADML-файла. Данный элемент содержит все остальные элементы ADML-файла;
  • resources. Содержит элементы stringTable и presentationTable для указанного языка. Эти два элемента должны быть определены в ADML-файле в определенном порядке: элемент stringTable, за которым следует элемент presentationTable, как того требует схема ADMX;
  • stringTable. Используя этот элемент ADML-файла, можно указать заголовок параметра ГП, текст с описанием, текст со ссылкой на поддержку, названия категорий, а также подписи для параметров. Элемент stringTable нельзя объявлять более одного раза. Данный элемент включает в себя вложенные элементы string, позволяющие определить все указанные выше данные;
  • presentationTable. Представляет собой структуру дочерних элементов управления параметрами отдельных параметров ГП, включая всевозможные флажки, переключатели, подписи, подсказки и прочее. Дочерними элементами являются элементы presentation, которые представляют собой отображаемые сведения параметров для параметров политики.
Элемент policyDefinitionResources — это элемент документа для ADMX-файла, который определяет набор параметров политики реестра. Элемент policyDefinitions также объявляет пространство имен по умолчанию для всех элементов в ADMX-файле.
Синтаксис элемента policyDefinitionResources:
<policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
revision="<MajorVerison.MinorVersion>" schemaVersion="<MajorVerison.MinorVersion>"
xmlns=" http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions" >
  <displayName> … </displayName>
  <description> … </description>
  <annotation> … </annotation>
  <resources> … </resources>
</policyDefinitionResources>
Атрибуты элемента policyDefinitionResources описаны в таблице Атрибуты элемента policyDefinitionResources.

Таблица 11.8. Атрибуты элемента policyDefinitionResources

Атрибут
Обязательный
Описание
xmlns:xsd
Нет
Обозначение элементов и типов данных, используемых в схеме пространства имен
xmlns:xsi
Нет
Обозначение пространства имён экземпляра XML-схемы, предоставленной в самом пространстве
revision
Да
Версия ADMX-файла.
Синтаксис:
revision="<MajorVerison.MinorVersion>"
где MajorVersion и MinorVersion являются номерами версии, например, revision="1.0"
schemaVersion
Да
Указывает версию схемы, используемую средствами работы с ГП. Синтаксис этой команды идентичен синтаксису revision
xmlns
Нет
Пространство имен схемы ГП
Дочерние элементы policyDefinitionResources описаны в таблице Дочерние элементы policyDefinitionResources.

Таблица 11.9. Дочерние элементы policyDefinitionResources

Элемент
Обязательный
Описание
displayName
Да
Локализованное название политики, содержащееся в ADML-файле
description
Нет
Описание параметров политики, содержащееся в ADML-файле
annotation
Да
Локализованный комментарий
resources
Нет
Содержит элементы stringTable и presentationTable для указанного языка.
Синтаксис:
<resources>
  <stringTable> … </stringTable>
  <presentationTable> … </presentationTable>
</resources>
Дочерние элементы resources описаны в таблице Дочерние элементы resources.

Таблица 11.10. Дочерние элементы resources

Элемент
Обязательный
Описание
stringTable
Нет
Содержит отображаемые строки для следующих видов информации:
  • заголовок параметра групповой политики;
  • описание групповой политики;
  • определения поддерживаемых продуктов (SupportedOn);
  • названия категорий и описание категории;
  • подписи для параметров.
Синтаксис:
<stringTable>
  <string> … </string>
</stringTable>
Элемент stringTable нельзя объявлять более одного раза.
presentationTable
Нет
Таблица элементов представления, представляющая структуру элементов управления параметрами для отдельных параметров групповой политики. Расположение элементов управления параметрами включает в себя: тип элемента ввода параметров (поле редактирования, ползунок, выпадающий список, флажки, переключатели); подписи и текст подсказки для ввода параметров; а также значения по умолчанию и диапазон возможных значений для каждого параметра.
Синтаксис:
<presentationTable>
  <presentation> … </presentation>
</presentationTable>
Если в ADML-файле нет элементов представления, элемент PresentationTable можно опустить. Если элемент PresentationTable включен в ADML-файл, необходимо определить хотя бы один элемент представления. Элемент PresentationTable определяется в ADML-файле не более одного раза.
Синтаксис элемента presentation:
<presentation id="<logical or friendly name>">
  <text> … </text>
  <decimalTextBox> … </decimalTextBox>
  <textBox> … </textBox>
  <checkBox> … </checkBox>
  <comboBox> … </comboBox>
  <dropdownList> … </dropdownList>
  <listBox> … </listBox>
</presentation>
Атрибуты элемента presentation описаны в таблице Атрибуты элемента presentation.

Таблица 11.11. Атрибуты элемента presentation

Атрибут
Обязательный
Описание
id
Да
Указывает логическое имя при ссылке на информацию о представлении для определенного параметра политики
Дочерние элементы presentation описаны в таблице Дочерние элементы presentation.

Таблица 11.12. Дочерние элементы presentation

Элемент
Обязательный
Описание
text
Да
Локализованная строка. Используется для определения текста, расположенного выше и ниже поля ввода параметра.
Синтаксис:
<text>Локализованная строка</text>
decimalTextBox
Нет
Текстовое поле с элементом управления прокруткой или без него для ввода десятичных чисел в качестве параметра настройки политики. Должен быть связан с элементом decimal, определенным в элементе elements.
Синтаксис:
<decimalTextBox refId="Sample_NumericTextLabel">Метка:</decimalTextBox>
где:
  • атрибут refId — сопоставление с элементом.
Пример:
<decimalTextBox
  refId="OrgMateScreensaverLockDelay_setter"
  defaultValue="3">
  Скорость повтора
</decimalTextBox>
Пример элемента decimalTextBox
textBox
Нет
Текстовое поле. Этот элемент должен быть связан с элементом text, определенным в elements.
Синтаксис:
<textBox refId="<ID>">
  <label> … </label>
  <defaultValue> … </defaultValue>
</textBox>
где:
  • атрибут refId — сопоставление с элементом;
  • label — подпись для параметра текстового поля (обязательный);
  • defaultValue — строка, по умолчанию отображаемая в текстовом поле.
Пример:
<textBox refId="OrgMateFilename_setter">
  <label>Файл:</label>
</textBox>
Пример элемента textBox
checkBox
Нет
Элемент флажка. Должен быть связан с элементом boolean, определенным в элементе elements.
Синтаксис:
<checkBox refId="<ID>
  defaultChecked="true|false">
  Placeholder label:
</checkBox>
где:
  • атрибут refId — сопоставление с элементом (обязательный);
  • атрибут defaultChecked — значение по умолчанию. Если не указано, атрибуту defaultChecked будет присвоено значение false.
Пример:
<checkBox refId="OrgXfceThunar_blocker">
  Блокировать
</checkBox>
Пример элемента checkBox
comboBox
Нет
Поле со списком со значениями по умолчанию или предлагаемыми записями. Должно быть связано с элементом text, определенным в элементе elements.
Синтаксис:
<comboBox refId="<ID>
  noSort="true|false">
  <label> … </label>
  <default> … </default>
  <suggestion> … </suggestion>
</comboBox>
где:
  • атрибут refId — сопоставление с элементом (обязательный);
  • атрибут noSort — если true, отображать предлагаемые значения в определенном порядке элементов предложения; в противном случае отсортировать предлагаемые значения в алфавитном порядке. Если не указано, атрибуту noSort будет присвоено значение false;
  • label — подпись для параметра (обязательный);
  • defaul — строка, по умолчанию отображаемая в параметре;
  • suggestion — строка раскрывающегося списка.
Пример:
<comboBox refId="OrgMateFilename_setter">
  <label>Файл</label>
  <default>None</default>
  <suggestion>testA</suggestion>
  <suggestion>testB</suggestion>
  <suggestion>testC</suggestion>
</comboBox>
Пример элемента comboBox
dropdownList
Нет
Раскрывающийся список, с помощью которого пользователь может выбрать одну из отображаемых записей. Должен быть связан с элементом enum, определенным в элементе elements.
Синтаксис:
<dropdownList refId="<ID>"
  noSort="true|false">
  defaultItem="<NumericValue>">
  Placeholder label:
</dropdownList>
где:
  • атрибут refId — сопоставление с элементом (обязательный);
  • атрибут noSort — если true, создать элемент spin; в противном случае создать текстовое поле для ввода чисел. Если не указано, атрибуту noSort будет присвоено значение true;
  • атрибут defaultItem — числовое значение, определяющее выбор из списка элементов по умолчанию. Список элементов нумеруется, начиная с 0.
Пример:
<dropdownList noSort="true" defaultItem="0" refId="OrgMateColorShadingType_setter">
  Тип градиента:
</dropdownList>
Пример элемента dropdownList
listBox
Нет
Представляет параметр списка с кнопками «Добавить» и «Удалить». Это единственный параметр, который можно использовать для управления несколькими значениями под одним ключом. Должен быть связан с элементом list, определенным в элементе elements.
Синтаксис:
<listBox refId="ID">Описание:</listBox>
где:
  • атрибут refId — сопоставление с элементом.
Пример:
<listBox refId="InstallPackagesList">
  Список пакетов для установки
</listBox>
Пример элемента listBox

Примечание

Дочерние элементы, указанные в элементе presentation, должны соответствовать элементам, определенным в элементе elements ADMX-файла.

11.1.3. Связывание информации из ADMX и ADML-файлов

В синтаксисе ADMX, элементы, управляющие представлением или локализованным отображением параметра, определяются в ADML-файле. Информация же, определяющая тип данных и значение параметра, задается в ADMX-файле. Различные элементы из этих двух файлов используются для создания определений параметров для настроек политики.
Ниже рассмотрен пример использования двух параметров checkbox для настройки одной политики.
Фрагмент XML из файла example.admx с элементом policy, который содержит два элемента флажка (checkbox):
<policy name="Sample_Checkbox" class="User"
displayName="$(string.Sample_Checkbox)"
explainText="$(string.Sample_Checkbox_Help)"
presentation="$(presentation.Sample_Checkbox)"
key="Software\BaseALT\Policies\gsettings">
  <parentCategory ref="system:ALT_Background_Mate" />
  <supportedOn ref="system:SUPPORTED_AltP9" />
  <elements>
    <boolean id="Checkbox_1" valueName="ExampleCheckbox1">
      <trueValue>
        <decimal value="1" />
      </trueValue>
      <falseValue>
        <decimal value="0" />
      </falseValue>
    </boolean>

    <boolean id="Checkbox_2" valueName="ExampleCheckbox2">
      <trueValue>
        <decimal value="0" />
      </trueValue>
      <falseValue>
        <decimal value="1" />
      </falseValue>
    </boolean>
  </elements>
</policy>
Фрагмент XML из файла example.admx с элементом policy, который содержит два элемента флажка (checkbox):
<presentation id="Sample_Checkbox">
  <checkBox refId="Checkbox_1">Первый параметр</checkBox>
  <checkBox refId="Checkbox_2" defaultChecked="true">Второй параметр — отмечен по умолчанию</checkBox>
</presentation>

Примечание

Каждому ADMX-файлу должен соответсвовать ADML-файл с тем же именем. Редактор объектов групповой политики отобразит сообщение об ошибке, если не сможет найти соответствующий ADML-файл для каждого прочитанного ADMX-файла.
Есть две области координации между файлами ADMX и ADML:
  1. Ссылка верхнего уровня между установкой политики и отображением её параметров. Политика, определяемая с помощью элемента policy в ADMX-файле, ссылается на определенный элемент presentation в ADML-файле через атрибут presentation элемента policy. В данном примере атрибут presentation определен как presentation="$(presentation.Sample_Checkbox)". Текст presentation.Sample_Checkbox сообщает редактору объектов групповой политики ссылаться на элемент presentationTable ADML-файла, используя атрибут id, для которого установлено значение Sample_Checkbox.
    Количество типов данных, а также тип данных (boolean, decimal, text, enum, item и list), определенные в элементе elements в ADMX-файле, должны соответствовать количеству и типу параметров, определенных в ADML-файле в элементе presentation (checkBox , textBox, decimalTextBox, ComboBox, dropdownList и listBox).
  2. Ссылка между представлением типа данных в элементе elements и определением параметра в элементе presentation.
    В примере элемент elements содержит два элемента boolean:
    <elements>
      <boolean id="Checkbox_1" valueName="ExampleCheckbox1">
        …
      </boolean>
    
      <boolean id="Checkbox_2" valueName="ExampleCheckbox2">
        …
      </boolean>
    </elements>
    
    Элемент presentation содержит два элемента checkBox:
    <presentation id="Sample_Checkbox">
      <checkBox refId="Checkbox_1">…</checkBox>
      <checkBox refId="Checkbox_2" defaultChecked="true">…</checkBox>
    </presentation>
    
    Атрибут id элемента boolean используется для соответствия связанному элементу checkBox, на который ссылается атрибут refId.
В следующей таблице показано, как сопоставляется тип данных в ADMX-файле, с определением параметра в ADML-файле.

Таблица 11.13. Сопоставление

Тип данных в ADMX-файле
Определение параметра в ADML-файле
boolean
checkBox
text
textBox
decimal
decimalTextBox
text
comboBox
enum или item
dropdownList
list
listBox

11.1.4. Рекомендации для создания ADMX-файлов

При создании ADMX-файлов следует придерживаться следующих рекомендаций:
  1. Чтобы избежать отображения повторяющихся узлов в редакторе объектов групповой политики, не следует использовать название категории, которое было ранее определено в родительской категории. Например, создание двух ADMX-файлов с одинаковой категорией приведет к тому, что редактор объектов групповой политики создаст два узла с одинаковым именем. Вместо этого следует создать собственный базовый файл (см.ниже), на который будут ссылаться все разрабатываемые ADMX-файлы.
  2. Чтобы избежать циклических ссылок, один ADMX-файл не должен ссылаться на элементы категории другого ADMX-файла. Вместо этого базовую категорию компонента следует поместить в отдельный базовый файл.
  3. Каждое пространство имен политики для ADMX-файла должно быть уникальным. Пространство имен политики определяется в целевом элементе ADMX-файла.
Создание пользовательского базового файла:
  1. Создать ADMX-файл MyCompany.admx с определением категории MyCompany:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <policyNamespaces>
        <target prefix="mycompany" namespace="MyCompany.Policies.MyCompany" />
      </policyNamespaces>
      <resources minRequiredRevision="1.0" />
      <categories>
        <category name="MyCompany"
          displayName="$(string.MyCompany)"
          explainText="$(string.MyCompany_Help)" />
      </categories>
    </policyDefinitions>
    
  2. Создать ADML-файл ru-RU/MyCompany.adml, который будет содержать локализованное название категории:
    <?xml version="1.0" encoding="utf-8"?>
    <policyDefinitionResources xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    revision="1.0" schemaVersion="1.0"
    xmlns="http://schemas.microsoft.com/GroupPolicy/2006/07/PolicyDefinitions">
      <displayName>Определение базовой категории</displayName>
      <description>Этот файл содержит определение базовой категории организации.
      </description>
      <resources>
        <stringTable>
          <string id="MyCompany">Моя организация</string>
          <string id="MyCompany_Help">Содержит параметры конфигурации,
          специфичные для организации.</string>
        </stringTable>
      </resources>
    </policyDefinitionResources>
    
Чтобы обратиться к базовому файлу MyCompany, следует включить атрибут using в элемент policyNamespaces. Атрибут пространства имен должен соответствовать пространству имен, определенному в пользовательском базовом файле (в примере MyCompany.Policies.MyCompany). Атрибутом префикса может быть любое имя, уникальное для ADMX-файла. Рекомендуется по возможности использовать строку атрибута префикса из пользовательского базового файла, чтобы избежать путаницы. Например, следующий фрагмент файла example.admx определяет пространство имен и ссылается на базовый файл MyCompany в элементе policyNamespaces:
<policyNamespaces>
  <target prefix="example" namespace="MyCompany.Policies.Example" />
  <using prefix="mycompany" namespace="MyCompany.Policies.MyCompany" />
</policyNamespaces>