ich habe im opsi-client-agent 4.0.1 das Problem, dass bei Installationen unter Windows XP das Profil des Installationsbenutzers pcpatch nicht richtig geladen wird, was bei einigen Setups zu Fehlern führt. Der konkrete Grund der Fehlschläge ist bei den meisten Setups, dass für den Benutzer kein Registry-Hive geladen wurde, das Setup jedoch versucht, Registrywerte unter HKEY_USERS\<SID von pcpatch> zu schreiben. Zusätzlich sind auch die Umgebungsvariablen USERNAME und USERDOMAIN nicht gesetzt sind, was ich mir auch gut als potentielle Fehlerquelle vorstellen kann.
Ab Windows Vista tritt dieses Problem nicht auf. Dort ist mir auch aufgefallen, dass die Installationen im Benutzerkontext der Logon-Sitzung laufen, also als Benutzer SYSTEM. Das hat wohl mit der ab Windows Vista eingeführten Session-0-Isolierung zu tun. Das Profil ist dort korrekt initialisiert.
Ich habe auch die Quellen von der OPSI-Python-Bibliothek untersucht, die Ausführung der Installationsskripte in der Login-Sitzung vom Windows-Dienst aus scheint in der Klasse OPSI.System.Impersonate implementiert zu sein. Dort ist mir folgender Block in der Methode start aufgefallen:
Code: Alles auswählen
if createEnvironment:
# http://www.java2s.com/Open-Source/Python/Windows/pyExcelerator/pywin32-214/win32/Demos/win32cred_demo.py.htm
self.userProfile = win32profile.LoadUserProfile(self.userToken, {'UserName': self.username, 'Flags': 0, 'ProfilePath': None})
logger.debug(u"User profile loaded")
self.userEnvironment = win32profile.CreateEnvironmentBlock(self.userToken, False)
logger.debug(u"Environment block created")
Wird der Fehler in einer zukünftigen Version von opsi-client-agent behoben? Es wäre unschön, wenn ich mir mit einem Workaround innerhalb der Installationsskripte behelfen müsste.
Grüße
Johannes