ADMX-Dateien

Die .ADMX-Dateien bilden als Nachfolger der bisherigen .ADM-Dateien ab Windows Vista und Windows Longhorn die Basis für Gruppenrichtlinien. Der Artikel analysiert diese Dateien und die möglichen Einstellungen anhand der Vorlage für die Desktop-Einstellungen.

Mit der Umstellung vom .adm- auf das .admx-Format, also von einem proprietären, an .ini-Dateien orientierten Ansatz hin zu einer XML-basierenden Lösung, bahnt sich bei den Gruppenrichtlinien mit Windows Vista und Longhorn der größte Umbruch seit der Umstellung von den Systemrichtlinien von Windows 9x und Windows NT 4.0 auf die Gruppenrichtlinien an.

Wenn man sich die Definitionen im Ordner

%systemroot%\PolicyDefinitions

betrachtet, wird gleich ein wesentlicher Unterschied deutlich, der aber nicht zwingend konzeptbedingt ist. Es gibt nun eine sehr viel größere Zahl an Dateien, die jeweils relativ klein sind, während bei den Gruppenrichtlinien wenige sehr große Richtlinienvorlagen verwendet wurden. Man könnte auch jetzt noch große Vorlagen entwickeln. Das ist aber ziemlich unübersichtlich, weshalb sich Microsoft für die andere Lösung entschieden hat.

Für Administratoren, die schon eigene .adm-Dateien entwickelt haben, bedeutet das neue Format zunächst eine Umstellung. Es ist aber, wenn man sich schon mit Richtlinienvorlagen beschäftigt hat, relativ einfach zu beherrschen.

Wichtig ist die Trennung unterschiedlicher Sprachversionen. Unterhalb des Verzeichnisses mit den Richtliniendefinitionen gibt es sprachabhängige Verzeichnisse wie en-us oder de-de mit den speziellen Anpassungen. In den dort abgelegten Dateien finden sich im Wesentlichen die Werte der in den Richtlinienvorlagen verwendeten Zeichenketten.

Die ersten Zeilen in den Dateien sind immer identisch, weil in ihnen die allgemeinen Namespaces festgelegt werden, die sich bei den verschiedenen Richtlinienvorlagen nicht unterscheiden:

<?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="0.9" schemaVersion
="0.9" xmlns="http://www.microsoft.com/GroupPolicy/
PolicyDefinitions">

Danach erfolgt die Festlegung der spezifischen Namespaces für die Richtlinienvorlage. Ein Beispiel ist:

<policyNamespaces>
<target prefix="desktop" namespace="Microsoft.
Policies.WindowsDesktop" />
<using prefix="windows" namespace="Microsoft.
Policies.Windows" />
</policyNamespaces>

Hier werden die Präfixe definiert, die in bestimmten Teilen der Richtlinie verwendet werden. Ausgehend von einem bestimmten Präfix wird konfiguriert, welchem Namensbereich die einzelnen Richtlinien zugeordnet sind.

Recht einfach wird es anschließend mit dem Eintrag zur erforderlichen Version. Bei den derzeitigen Betaversionen wird folgende Festlegung verwendet:

<resources minRequiredRevision="0.9" />

Diese Information ist für die Prüfung erforderlich, ob die nachfolgende Richtlinie verarbeitet werden kann. Weiter gehende Prüfungen wie teilweise bei den bisherigen .adm-Dateien sind nicht erforderlich, weil bei jedem einzelnen Eintrag eine Minimalanforderung für das unterstützte Betriebssystem definiert werden kann.

Der nächste Bereich ist die Definition von Kategorien, die im Gruppenrichtlinieneditor angezeigt werden sollen. Dazu wird mit dem Tag categories gearbeitet:

<categories>
<category name="ActiveDesktop" displayName
="$(string.ActiveDesktop)">
<parentCategory ref="windows:Desktop" />
</category>
<category name="ActiveDirectory" displayName
="$(string.ActiveDirectory)">
<parentCategory ref="windows:Desktop" />
</category>
</categories>

In diesem Fall werden zwei Kategorien erstellt, die unterhalb von Desktop angeordnet sind. Man kann diese Kategorien beliebig schachteln, je nach erforderlicher Struktur. Interessant ist, dass hier auch erstmals Zeichenketten genutzt werden, um die Sprachanpassungen vorzunehmen. Die entsprechenden Werte finden sich jeweils in den untergeordneten Dateien für verschiedenen Sprachversionen.

Nun erst beginnt der Hauptteil der Richtlinienvorlage mit den einzelnen Richtlinien. Ein erstes Beispiel ist

<policies>
<policy name="ForceActiveDesktopOn" class="User"
displayName="$(string.ForceActiveDesktopOn)"
explainText="$(string.ForceActiveDesktopOn_Help)"
presentation="$(presentation.ForceActiveDesktopOn)"
key="Software\Microsoft\Windows\CurrentVersion\
Policiesxplorer" valueName="ForceActiveDesktopOn">
<parentCategory ref="ActiveDesktop" />
<supportedOn ref="windows:SUPPORTED_Win2k" />
</policy>

Innerhalb des Tags <policies> gibt es einzelne <policy>-Tags mit den Richtlinien. In diesem Fall wird eine Richtlinie ForceActiveDesktopOn erstellt, die bei der Klasse User (im Gegensatz zu Computer) angezeigt wird. Der Anzeigename und der erklärende Text werden über Zeichenketten definiert, die aus der sprachabhängigen untergeordneten Datei übernommen werden. Mit der Zeichenkette bei presentation wird eine zusätzliche Information definiert, die beispielsweise für die Beschreibung des zulässigen Formats verwendet werden kann. In diesem Fall ist das ein Text wie Allows HTML and JPEG wallpaper. Diese zusätzlichen Informationen werden nicht generell verwendet.

Nach diesen beschreibenden Informationen folgt der Registry-Schlüssel und der Wert darin, der angepasst werden soll. Hier erfolgt noch eine Zuordnung zu der weiter oben definierten Kategorie und die Information darüber, welche Windows- Version minimal erforderlich ist, um die Richtlinien auszuführen.