Softwareverteilung: Befehle für jeden Benutzer einmalig nach Login ausführen lassen - Aber richtig

Benutzeravatar
ngottschalk
Beiträge: 245
Registriert: Mi Sep 08, 2010 12:57 pm

Softwareverteilung: Befehle für jeden Benutzer einmalig nach Login ausführen lassen - Aber richtig

Beitragvon ngottschalk » Mo Jul 13, 2015 2:03 pm

Wer kennt das nicht? Man möchte eine Software verteilen, was soweit auch problemlos klappt, jedoch möchte man den Benutzern auch noch weiteren Konfigurationsaufwand ersparen und direkt passende Voreinstellungen mitgeben, die aber im nutzereigenen Profil abgelegt werden.
Häufig stellt sich unseren Usern die Frage, wie solche Verteilungen mittels ACMP umgesetzt werden können. Der folgende kurze Artikel soll eine von Windows integrierte Funktion hierfür, das Active Setup, genauer beleuchten, sodass Ihnen die Umsetzung dieser Anforderung auf diesem Weg leicht fallen sollte.

Über das Active Setup
Das Active Setup ist ein windowseigener Mechanismus, der es bequem ermöglicht, Aktionen auf Clients einmal für jeden Benutzer auszuführen, der sich am Host anmeldet (Beispiel: Wenn man sich das erste Mal an einem System anmeldet, werden Einstellungen vorgenommen, wobei der Status in einem Fenster in der oberen, linken Ecke angezeigt wird; Hierbei handelt es sich bereits um das Active Setup). Dies ist in der Paketierung nötig, wenn man z.B. Dateien in Benutzerverzeichnisse kopieren muss (da sich nach der Ausführung des Commands Benutzer am System anmelden könnten, für die noch kein Profilordner erstellt wurde).

Funktionsweise
Hierfür wird beim Login des Benutzers die Registrierung des Users unter "HKEY_CURRENT_USER\Software\Microsoft\Active Setup\Installed Components" analysiert und mit den Einträgen unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components" verglichen.
Sollten im HKLM-Zweig Einträge vorhanden sein, deren Schlüssel im HKCU-Zweig noch nicht bestehen oder deren Version höher als die des Eintrags unter HKCU ist, wird ein hinterlegter Befehl ausgeführt und eine Kopie des Schlüssels in den HKCU-Pfad übernommen, die anzeigt, dass der Befehl für diesen Benutzer in dieser Version bereits ausgeführt wurde. Möchte man also einen Active Setup Befehl erneut für Benutzer ausführen (z.B. nach einer Reparatur), kann man einfach den Eintrag unter HKCU löschen oder die Version des Eintrags unter HKLM erhöhen.

Umsetzung
Möchte man also einen solchen Mechanismus umsetzen, muss man folgendermaßen vorgehen:
Man legt einen beliebig benannten Schlüssel unter "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components" an (als Name bietet sich aufgrund der Einmaligkeit und leichten Zuordnung z.B. eine CC-GUID an)
Man legt unterhalb dieses Schlüssels 2 Werte an:
Version (Zeichenkette): Stellt die durch Kommata separierte Version dar, die beim Login verglichen wird (sofern ein gleicher Schlüssel unter HKCU bereits vorhanden ist)
StubPath (Zeichenkette): Gibt den Befehl an, der ausgeführt werden soll. Dieser muss sich entweder im %PATH% befinden oder mit dem kompletten Pfad angegeben werden. ACHTUNG: Bei Pfaden mit Leerzeichen immer den Befehl in Anführungszeichen setzen!
Man bearbeitet den Standardwert und hinterlegt den später bei der Durchführung anzuzeigenden (möglichst sprechenden) Namen.
Möchte man für einen ggf. gerade Angemeldeten Benutzer die Aktion direkt ausführen (damit Einstellungen o.Ä. direkt und nicht erst beim nächsten Login übernommen werden), muss der im StubPath angegebene Befehl impersoniert ausgeführt und die entsprechenden HKCU-Werte (ebenfalls impersoniert) geschrieben werden. Hierbei sollte in ACMP Client Commands die Option 'ignore error' aktiviert werden, da es zu einem Fehler kommt, sollte zur Ausführungszeit kein Benutzer angemeldet sein, da die Impersonierung scheitert.

Tipp
Werden manche Umgebungsvariablen des Systems bei der Ausführung nicht aufgelöst, sollte versucht werden, den Befehl mit einem vorangestelltem "cmd /c" aufzurufen, wodurch die gesamte Benutzerumgebung verfügbar sein sollte.
Möchte man Dateien für das Active Setup nutzen, bietet es sich an, diese im Installationsordner abzulegen oder (im Falle mehrerer Dateien) einen ganzen Unterordner für diese anzulegen.
Zudem sollten die unter viewtopic.php?f=77&t=2059 beschriebenen Unterschiede zwischen 64- und 32-Bit Umgebungen beachtet werden.

Nachbereitung
Sollte dieser Mechanismus genutzt werden, muss daran gedacht werden, dass bei einer Deinstallation der Eintrag unter HKLM wieder gelöscht werden sollte (damit keine Aktionen von Programmen ausgeführt werden, die ggf. bereits deinstalliert wurden) und die Einträge aus der Benutzerregistrierung entfernt werden sollten (damit die Aktionen nach einer erneuten Installation wieder ausgeführt werden).

Als Beispiel hängt ein kleines Client Command an, das für jeden Benutzer einmalig nach dem Login eine Commandshell mit dem Paramter "/K echo Hello, world!" aufruft (also "Hello world!" ausgibt und geöffnet bleibt), sollte ein Benutzer angemeldet sein, wird der Befehl für diesen auch direkt ausgeführt.
Dateianhänge
Active Setup Beispiel__{31BAAA0E-03F8-4EB5-99F9-B4239D7FF5A3}.sim
(7.12 KiB) 189-mal heruntergeladen
Mit freundlichen Grüßen

Niklas Gottschalk (gottschalk@zoller-d.com)
IT Service Manager
E. Zoller GmbH & Co. KG

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast