Product SiteDocumentation Site

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

30.1. Схема административных шаблонов (ADMX)
30.1.1. Структура ADMX-файла
30.1.2. Структура ADML-файла
30.1.3. Связывание информации из ADMX и ADML-файлов
30.1.4. Рекомендации для создания ADMX-файлов
30.2. Разработка новой политики
30.2.1. Пример для механизма Systemd
30.2.2. Пример для механизма Control
30.2.3. Пример для механизма Gsetting
30.2.4. Пример для механизма Polkit

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

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

⁠30.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.
⁠

Таблица 30.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.
⁠

Таблица 30.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.
⁠

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

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

Таблица 30.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.
⁠

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

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

Таблица 30.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.
⁠

Таблица 30.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-файле.

⁠30.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.
⁠

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

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

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

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

Таблица 30.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.
⁠

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

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

Таблица 30.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-файла.

⁠30.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-файле.
⁠

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

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

⁠30.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>