Ein Mal und nie wieder – GP Preferences “Apply once” Option

Hallo! Mein Name ist Patrick Gotsch. Ich bin selbstständiger IT-Consultant  und spezialisiert auf Active Directory, Group Policies und Scripting. In den Technet-Foren bin ich als „gotsch-it“ unterwegs, ansonsten bin ich über https://www.gotsch-it.de erreichbar. Ich darf in diesem Gast-Beitrag (*) etwas über die Hintergründe und Fallstricke der GP Preferences Option “Apply Once and do not reapply” erzählen.

GP Preferences bieten eine ganze Reihe an neuen Konfigurationsmöglichkeiten via Group Policy Objects. Der Name "Preferences“ suggeriert dabei, dass es sich um „Voreinstellungen“ handelt. Eine Voreinstellung - so die übliche Erwartungshaltung - ist eine vorgegebene Erstkonfiguration, die  von einem Endbenutzer bei Bedarf angepasst werden kann.

Grundsätzlich ist genau das mit GPP auch möglich, denn die Preferences-Extension schreibt nicht in die für Policies vorgesehenen (und schreibgeschützten) Registry-Keys  “HKxx\Software\Policies\... ”  bzw.”HKxx\ Software \Microsoft\Windows\CurrentVersion\Policies... ”, sondern direkt in die vom Betriebssystem bzw. von Anwendungen genutzten Schlüssel, z.B. “HKCU\Software\Microsoft\Internet Explorer”. Diese können dann vom Anwender direkt in der Registry oder üblicherweise durch die jeweilige Anwendung (z.B. “Internet Explorer”) verändert werden. Voraussetzung dafür ist natürlich, dass die Berechtigungen im jeweiligen Registry-Zweig das auch erlauben.

Was aber passiert nach der Änderung einer solchen Einstellung durch den Anwender?

Sobald die GPO erneut angewendet wird (z.B. beim Anmelden oder auch während der Hintergrund-Aktualisierung, standardmäßig alle 90 Minuten) wird auch das Preference-Item erneut angewendet und die Änderung des Anwenders wieder mit dem Wert aus der GPO überschrieben. Somit ist die Modifikation durch den Anwender nicht von langer Dauer.

Um dem entgegen zu wirken, kann unter den „Common Options“ für jedes Preference-Item individuell die Option  “Apply once and do not reapply” gesetzt werden.

Das führt dazu, dass die betreffende Konfiguration durch GPP wirklich nur ein einziges Mal durchgeführt wird.

Aber wie genau funktioniert das technisch und was muss man dabei beachten?

Alle Preference Items resultieren letztlich in XML Dateien, die auf dem SYSVOL abgelegt werden. Diese XML Dateien werden später vom Client durch die GPP CSE (Client Side Extension) ausgewertet. Jede Option, die man im Preferences Editor gesetzt hat, findet sich in der jeweiligen XML Datei wieder. Sobald man die Option “Apply once and do not reapply” gesetzt hat, kann man in der XML Datei einen neuen Eintrag “FilterRunOnce” sehen, der auch die Eigenschafte „ID“ enthält:

Während der ersten Anwendung eines solchen Preference Item wird die “ID” der “Apply once…” Option auf dem Client in der Registry gespeichert. Für Benutzer-Items geschieht dies in der Registry unter “HKCU\Software\Microsoft\Group Policy\Client\RunOnce”, für Computer-Items unter “HKLM\Software\Microsoft\Group Policy\Client\RunOnce”.

Wird dasselbe Item nun ein zweites Mal angewendet, erfolgt zunächst eine Prüfung auf dieses Registry-Flag. Wird es gefunden, so wird die weitere Ausführung abgebrochen.

Hat man das Logging für die entsprechende GPP Extension aktiviert, kann man das prima nachverfolgen:

In Test- oder Troubleshooting-Situationen kann man durchaus  einmal durch Löschen der passenden ID in der Registry die erneute Anwendung eines Preference Items erzwingen. Im Rahmen der “Apply once and do not reapply” Option gibt es noch einige wissenswerte Zusammenhänge:

•    Werden Filter über das “Item Level Targeting” (ILT) parallel genutzt, ist das Verhalten nicht unbedingt wie erwartet: Ist die ILT-Bedingung (z.B. eine Gruppenmitgliedschaft) zum Zeitpunkt A nicht erfüllt, wird das lokale Ausführungs-Flag in der Registry trotzdem gesetzt. Selbst wenn zum Zeitpunkt B dann die ILT Bedingung erfüllt ist, wird aufgrund der vorrangigen Prüfung auf “Apply Once” das Preference Item nicht angewendet. So kann es durchaus passieren, dass eine gewünschte Einstellung nie am Ziel ankommt. Dieses Verhalten wird derzeit von Microsoft geprüft, ggf. kann es hier in Zukunft zu einer Anpassung kommen.

•    Kopiert man ein Preference Item mit “Apply Once” Option  via ”Copy & Paste” über das Kontextmenü, so wird auch die dazugehörige ID kopiert und ist nicht mehr eindeutig. Werden Kopie und Original auf demselben Client angewendet, wird nur das erste von beiden Items ausgeführt. Das zweite Item “denkt” dann aufgrund der identischen ID, es sei schon angewendet worden. Als Workaround kann man in der Kopie einmal den Haken entfernen, alles bestätigen und dann den Haken neu setzen. Dadurch wird eine neue ID generiert und im XML File gespeichert.

Problem identische IDs durch “Copy & Paste”:  XML-Ansicht

Problem identische IDs durch “Copy & Paste”:  Logfile

Auch wenn ich hier gezeigt habe, dass es die eine oder andere Besonderheit im Rahme der GP Preferences zu beachten gilt, bleiben sie aus meiner Sicht eine mächtige und flexible Ergänzung zu den „echten“ Policies. Wer sich bis jetzt noch nicht mit dem Thema beschäftig hat, sollte keine Zeit mehr verlieren…

Beste Grüße,
Patrick

* Rechtlicher Hinweis: Bei den hier als "Gastbeitrag" markierten Artikeln handelt es sich um Blogs, die von nicht-Microsoft Mitarbeitern verfaßt wurden. Diese Beiträge geben ausschließlich die Meinung des jeweiligen Autors wieder und stimmen nicht unbedingt mit der Meinung von Microsoft überein. Microsoft macht sich diese Beiträge ausdrücklich nicht zu eigen. Eine Vorabkontrolle der Beiträge findet nicht statt. Dementsprechend kann Microsoft keine Verantwortung oder Gewähr für die Beiträge übernehmen.