Gruppenrichtlinien als ADMX-Dateien
Gültig für: Windows Vista | Server 2008 | Windows 7 | Windows 8 | Windows 10
Ab Windows Vista hat Microsoft die ADM-Dateien (siehe Tipp: Erstellen einer eigenen ADM - Datei) für die Gruppenrichtlinien durch ADMX-Dateien ersetzt. Die ADM-Dateien für Gruppenrichtlinien, die ab Windows NT eingeführt wurden, hatten einen textbasierten Aufbau, welcher jetzt auf ein XML-basiertes Format umgestellt wurde.
Gleichzeitig wurden die Gruppenrichtliniendateien in sprachneutrale (.admx-Dateien), welche im Verzeichnis "%systemroot%\PolicyDefinitions" abgelegt werden, sprachspezifisch aufgeteilt - zu finden unter "%systemroot%\PolicyDefinitions\[Sprachkürzel]" (z.B: für Deutsch "%systemroot%\PolicyDefinitions\de-DE"). Auch wurden die großen Gruppenrichtlinien in mehrere kleine Dateien aufgeteilt, so dass mit Windows Vista ca. 130-ADMX-Dateien ausgeliefert werden.
Dass Microsoft noch mehr auf die Gruppenrichtlinien gehen will, sieht man daran, dass die Gruppenrichtlinien-Verwaltungskonsole (GPMC.MSC), die früher noch als zusätzlicher Download geladen werden musste, jetzt mit Windows Vistagemeinsam ausgeliefert wird.
Die alten ADM-Dateien können weiterhin verwendet werden. Sie werden auch weiter im Verzeichnis "%systemroot%\inf" gespeichert. Hier können die alten angepassten ADM-Dateien abgelegt werden und werden in Gruppenrichtlinieneditor (GPEDIT.MSC) auch angezeigt. Diese Einstellungen werden im neuen Gruppenrichtlinieneditor im Unterordner "Klassische Administrative Vorlagen (ADM)" aufgelistet. Dabei werden die durch ADMX-Dateien ersetzten ADM-Dateien nicht mehr angezeigt. Dabei handelt es sich z.B. um die Dateien SYSTEM.ADM, CONF.ADM, WUAU:ADM, INETRES.ADM usw. Anpassungen in diesen Dateien werden ignoriert und müssen in den neuen ADMX-Dateien durchgeführt werden.
In einer Windows-Domäne können die ADMX-Dateien auch über eine zentrale Stelle verwaltet werden. Die Dateien werden vom Gruppenrichtlinieneditor aus dem SYSVOL-Ordner (%systemroot%\sysvol\domain\policies\PolicyDefinitions) eines Domänencontrollers gelesen. Nur wenn dieser Speicherort nicht verfügbar ist, werden die lokal gespeicherten Dateien verwendet.
Der zentrale Speicherort lässt sich nicht konfigurieren. Das Ablegen der Datei im SYSVOL kann auch schon auf einen Windows 2000 Server gemacht werden, und somit kann diese Funktion auch schon jetzt benutzt werden. Die neuen ADMX-Dateien können aber nur von Windows Vista genutzt werden.
Übersicht der Speicherorte von Gruppenrichtlinien:
Gruppenrichtliniendatei | Speicherort |
---|---|
AMD-Dateien | %systemroot%\inf |
ADMX-Dateien (lokal) | %systemroot%\policyDefinitions |
ADML-Dateien (lokal) | %systemroot%\policyDefinitions\[Sprachkürzel] |
ADMX-Dateien (Domäne) | %systemroot%\sysvol\domain\policies\PolicyDefinitions |
ADML-Dateien (Domäne) | %systemroot%\sysvol\domain\policies\PolicyDefinitions\[Sprachkürzel] |
Einstellungen werden in den Gruppenrichtlinen vorgenommen mit:
lokale Gruppenrichtlinien: GPEDIT.MSC
Domänen Gruppenrichtlinien: GPMC.MSC
Aufbau der neuen ADMX-Dateien
Wer schon mit den alten ADM-Dateien gearbeitet hat, wird mit dem neuen Format schnell zurechtkommen. Wichtig ist, dass man sich an die Trennung von sprachunabhängigen und sprachabhängigen Bestandteilen hält. Am Einfachsten lassen sich ADMX-Dateien mit dem Tool "ADMX-Migrator" (Link siehe unten) bauen und bearbeiten.
Sprachunabhängiger Teil:
Anhand der Datei "AddRemovePrograms.admx" wird der grundlegende neue Aufbau der ADMX-Dateien beschrieben.
Der Kopf (Header) jeder ADMX-Datei hat immer den gleichen Aufbau. Hier wird der allgemeine Namespaces für die Richtliniendateien festgelegt:
<?xml version="1.0" encoding="utf-8"?> <!-- (c) 2006 Microsoft Corporation --> <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"> |
Im zweiten Teil werden die Präfixe der spezifischen Namespaces festgelegt:
<policyNamespaces>
</policyNamespaces> |
Wenn Sie eine eigene ADMX-Datei erstellen, müssen Sie sich einen neuen Namespace erstellen.
Dazu tauschen Sie die Zeile "<target prefix="addremoveprograms" namespace="Microsoft.Policies.AddRemovePrograms" />" durch folgenden Eintrag aus: "<target prefix="winfaq" namespace="winfaq.Policies.[UID/Name]" />".
Für [UID/Name] tragen Sie eine eindeutigen Namen ein (z.B.: 5B9B8C06_291A_4772_8D7A_9ECA8318C51F).
Anschließend wird die Version festgelegt. Diese Version wird überprüft, um zu erkennen, ob diese Richtlinie überhaupt verarbeitet werden kann. Die aktuelle Windows Vista Version fängt mit der Nummer 1.0 an. Bei späteren Erweiterungen der ADMX-Spezifikation wird sich diese Nummer entsprechend erhöhen:
<resources minRequiredRevision="1.0" /> |
In dem nächsten Bereich werden die Kategorien der Gruppenrichtlinien festgelegt, unter dem die einzelnen Einträge angezeigt werden sollen. Hier wird auch über „$(string.Arp)“ auf einen sprachspezifischen Teil der Richtlinien verwiesen (siehe unten „Sprachabhängiger Teil“), welcher in der Datei "AddRemovePrograms.adml" abgelegt wird.
<categories>
</categories> |
Der Eintrag "parentCategory" legt die übergeordnete Kategorie fest, wo dieser Eintrag zusätzlich eingefügt wird. Im unteren Bild sehen Sie, wo diese Einträge in GPEdit und im ADMX-Migrator angezeigt werden.
Hier kann mehr als eine Kategorie angelegt werden. Die einzelnen Kategorien werden durch den Tag<category name="[Name]" displayName="$(string.[Name])"> und </category> eingeschlossen.
Jetzt kommt der Hauptteil der Gruppenrichtlinien, wo die einzelnen Tipps/Einstellungen festgelegt werden.
<policies>
</policies> |
Innerhalb des Tags <policies>… </policies> können Sie beliebig viele Einträge hinzufügen. Jeder Eintrag wird über die Tags <policy> und </policy> eingeschlossen.
Es gibt jeweils verschieden Anzeigemöglichkeiten, wie die Tipps im Gruppenrichtlinieneditor angezeigt werden. Diese Darstellungen werden hier kurz beschrieben. Vorab werden die Parameter gezeigt, die bei jedem Eintrag vorkommen.
policy name= | Legt den internen Namen für diesen Tipp in der ADMX-Datei fest |
class= |
Legt fest im welchen Bereich der Tipp angezeigt werden soll. Dabei sind folgende Werte möglich: User -> Der Tipp wird unter "Benutzerkonfiguration" angezeigt (HKCU) Computer -> Der Tipp wird unter "Computerkonfiguration" angezeigt (HKLM) |
displayName= | Legt den Anzeigenamen in der Gruppenpolicy fest |
explainText= | Legt den Beschreibungstext für den Tipp fest |
key= | Legt den Pfad in der Registry zum Eintrag fest |
Optional: valueName= |
Legt den Namen des Schlüssels fest der geändert/gesetzt werden soll. Bei einigen Anzeigearten (siehe weiter unten, wird dieser Wert nicht angegeben). |
<parentCategory ref="[Name]" /> |
Hier wird die Kategorie festgelegt unter dem der Tipp angezeigt werden soll. Die möglichen Einträge werden wie oben beschrieben unter "<categories>" konfiguriert. |
<supportedOn ref="windows:SUPPORTED_WindowsPreVista" /> |
Legt das Betriebssystem fest für die der Tipp gültig ist. Hier Beispiele für mögliche Werte:
|
Eintrag zum aktivieren/deaktivieren
<policy name="NoAddFromCDorFloppy" class="User" displayName="$(string.NoAddFromCDorFloppy)" explainText="$(string.NoAddFromCDorFloppy_Help)" key="Software\Microsoft\Windows\CurrentVersion\Policies\Uninstall" valueName="NoAddFromCDorFloppy">
</policy> |
Die hier benutzten Einträge wurden oben schon beschrieben. Dieses ist die am meisten benutzte Konfiguration und bietet die einfache Möglichkeit, einen Eintrag zu aktivieren/deaktivieren. In der nächsten erweiterten Form werden noch die Werte angegeben, die in jeweiligen Zustand in die Registry geschrieben werden sollen:
<policy name="NoMyComputerIcon" class="User" displayName="$(string.NoMyComputerIcon)" explainText="$(string.NoMyComputerIcon_Help)" key="Software\Microsoft\Windows\CurrentVersion\Policies\NonEnum" valueName="{20D04FE0-3AEA-1069-A2D8-08002B30309D}">
</policy> |
Eintrag mit Texteingabe
<policies>
</policies> |
Bei dieser Art von Policy wird der Eintrag ValueName nicht in der oberen Konfiguration angegeben. Die möglichen Elemente innerhalb der unteren Box werden im Bereich <elements> abgelegt. Für eine Eingabebox wird dafür folgender Eintrag verwendet:
text id= | Legt den internen Namen für diesen Tipp in der ADMX-Datei fest |
valueName= | Legt den Namen des Schlüssels fest der geändert/gesetzt werden soll |
required= |
Legt fest ob dieser Eintrag bei der Eingabe gefüllt werden muss. Die möglichen Wert sind: true -> Eingabe erforderlich false -> Wert kann leer bleiben. |
Auswahlbox
<policy name="LockUserUILanguage" class="User" displayName="$(string.LockUserUILanguage)" explainText="$(string.LockUserUILanguage_Help)" presentation="$(presentation.LockUserUILanguage)" key="Software\Policies\Microsoft\Control Panel\Desktop">
</policy> |
Bei diesem Tipp werden dem Anwender bestimmte Möglichkeiten zur Auswahl vorgegeben. In Beispiel wird nur ein Eintrag angegeben, durch weitere Blöcke können Sie diese Liste erweitern.
enum id= | Legt fest, dass es sich um eine Listbox handelt. Hier wird der interne Name im ADMX-File angegeben |
valueName= | Legt den Namen des Schlüssels fest, der geändert/gesetzt werden soll |
required= |
Legt fest ob dieser Eintrag bei der Eingabe gefüllt werden muss. Die möglichen Wert sind: true -> Eingabe erforderlich false -> Wert kann leer bleiben. |
item displayName= | Für jede mögliche Auswahl ein Eintrag. Hier wird der Test angegeben, der zur Auswahl angezeigt werden soll. |
<value></value> | Dazwischen wird der Wert festgelegt, der bei der Auswahl gesetzt werden soll. |
<string>[Text]</string> | Hier wird der Wert angegeben, der bei der Auswahl in der Registry eingetragen wird. |
Zahlenwerte
<policy name="AD_QueryLimit" class="User" displayName="$(string.AD_QueryLimit)" explainText="$(string.AD_QueryLimit_Help)" presentation="$(presentation.AD_QueryLimit)" key="Software\Policies\Microsoft\Windows\Directory UI">
</policy> |
Erstellt eine Textbox für die Zahleneingabe. Es werden nur Zahlenwerte in dieser Box zugelassen. Weiterhin kann ein minimaler und maximaler Wert festgelegt werden.
decimal id= | Legt fest das es sich um eine Zahlenbox handelt. Hier wird der interne Name im ADMX-File angegeben |
valueName= | Legt den Namen des Schlüssels fest der geändert/gesetzt werden soll |
required= |
Legt fest ob dieser Eintrag bei der Eingabe gefüllt werden muss. Die möglichen Wert sind: true -> Eingabe erforderlich false -> Wert kann leer bleiben. |
Optional: minValue= |
Legt den minimalen Wert fest |
Optional: maxValue= |
Legt den maximalen Wert fest |
Checkbox
<policy name="LimitSize" class="User" displayName="$(string.LimitSize)" explainText="$(string.LimitSize_Help)" presentation="$(presentation.LimitSize)" key="Software\Microsoft\Windows\CurrentVersion\Policies\System" valueName="EnableProfileQuota">
</policy> |
Diesen Beispiel enthält nicht nur Checkboxen sondern auch ein paar anderen Elemente die schon weiter oben beschrieben wurden. Es wird hier gezeigt wie die unterschiedlichen Elemente kombiniert werden können.
boolean id= | Legt fest, dass es sich um eine Checkbox handelt. Hier wird der interne Name im ADMX-File angegeben |
valueName= | Legt den Namen des Schlüssels fest, der geändert/gesetzt werden soll |
Listwerte
<policy name="Pol_AssignedOfflineFiles_1" clientExtension="{C631DF4C-088F-4156-B058-4375F0853CD8}" class="User" displayName="$(string.Pol_AssignedOfflineFiles)" explainText="$(string.Pol_AssignedOfflineFiles_Help)" presentation="$(presentation.Pol_AssignedOfflineFiles_1)" key="Software\Policies\Microsoft\Windows\NetCache">
</policy> |
<elements>
</elements> |
list id= | Legt fest, dass es sich um eine Listbox handelt. Hier wird der interne Name im ADMX-File angegeben |
key= | Legt den Pfad in der Registry zum Eintrag fest |
additive= |
Ist der Wert "True", werden die vorhandenen Unterschlüssel nicht gelöscht und die Einträge werden hinzugefügt. Ist der Wert auf "False", werden die vorhandenen Unterschlüssel gelöscht. |
explicitValue= |
Ist der Wert "True", wird eine Tabelle mit zwei Spalten angezeigt. Der Anwender muss den Schlüsselnamen und den Wert eingeben. Ist der Wert "False", muss der Anwender nur den Wert eingeben, der Schlüsselname wird automatisch gebildet. |
valuePrefix="" | Legt den Präfix für den Registryeintrag fest, der entsprechend hochgezählt wird. |
Abschluss der XML-Datei:
</policyDefinitions> |
Sprachabhängiger Teil:
Hier wird die Datei "AddRemovePrograms.adml" als Beispiel für eine entsprechende Beschreibung verwendet.
Der Kopf (Header) jeder ADML-Datei hat immer den gleichen Aufbau wie die ADMX-Datei. Hier wird der allgemeine Namespaces für die Richtliniendateien festgelegt:
<?xml version="1.0" encoding="utf-8"?> <!-- (c) 2006 Microsoft Corporation --> <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">
|
Sprachtexte in der String-Tabelle:
<resources>
|
Sprachdateien in der Presentation-Tabelle:
<presentationTable>
</presentationTable> |
Abschluss der XML-Datei:
</policyDefinitionResources> |
Tools für die ADMX-Dateien
ADMX-Migrator:
Mit dem kostenlosen Tool können Sie bestehende, alte ADM-Dateien in ADMX-Dateien konvertieren. Weiterhin werden Sie bei der Erstellung eigener ADMX-Dateien unterstützt:
Download:
XML Notepad 2007:
Einfacher XML-Editor zum Bearbeiten von ADMX-Dateien.
Download:
WinFAQ: Startseite | WinFAQ: HTMLMenü | WinFAQ: Java Version
Der Tipp enthält einen Fehler oder Sie haben noch eine Ergänzung dafür? Schreiben Sie uns über die Feedback-Seite an: Feedback-Formular
URL: http://www.winfaq.de/faq_html/Content/tip2000/onlinefaq.php?h=tip2480.htm
WinFAQ ® Version 9.01 Copyright © 1996/2016 by Frank Ullrich