Windows 64-bit opsi-client-agent LoginBlocker blockt nicht

Antworten
Valentino-46
Beiträge: 280
Registriert: 05 Aug 2011, 14:24

Windows 64-bit opsi-client-agent LoginBlocker blockt nicht

Beitrag von Valentino-46 »

Hallo Opsi Community,

hab mal wieder ein interessantes Problem.

Ich installiere auf Windows XP 64-bit den Opsi-client-agent mit der inivar LoginBlockerStart auf "on" gestellt.
Allerdings kann ich mich nach dem booten trotzdem anmelden. Schalte ich auf "off" dann hab ich das selbe...klar, gott sei dank :-) Aber AN geht er nicht.

Jetzt habe ich die Gegenprobe auf einem Windows XP 32-bit Rechner gemacht und siehe da. Selbe Client-Agent Version ...es funktioniert alles. An Aus, so wie ich es will.

Was ich in der Registry der 64-bit Maschine sehe ist, dass er diesen LoginBlockerStart Key unter : [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\opsi.org\opsi-client-agent]
installiert hat. Also im 32-bit Zweig. Das ist so in Ordnung oder?!

Folgende Einträge befinden sich unter dem Schlüssel:
"LoginBlockerStart"=dword:00000001
"NextGina"="C:\\Program Files (x86)\\opsi.org\\opsi-client-agent\\opsigina\\opsigina.dll"
"LoginBlockerLogLevel"=dword:00000006
"LoginBlockerTimeoutConnect"=dword:00000078
"opsiServiceType"=dword:00000002

Also aktiviert ist er! Ich kann mich aber wie gesagt problemlos anmelden während er installiert :-)
DisableCAD also das unterdrücken der Strg + Alt + Entf aufforderung hab ich auch in beiden Variationen schon versucht :-( nix ...

Achso, eine opsi_loginblocker.txt in C:\tmp existiert NICHT !

Wer hat hier Erfahrung?
DANKESCHÖN und Viele Grüße
Valentino
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von d.oertel »

Hi,

wie hast Du den client-agenten installiert?

Gruss d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Valentino-46
Beiträge: 280
Registriert: 05 Aug 2011, 14:24

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von Valentino-46 »

2 Methoden wie ich es installiere. Erstinstallation und Updateinstallation wenn er schon drauf ist.

Also ich hab das opsi-client-agent .opsi Paket von eurem Server heruntergeladen (aktuellste Version) und dann auf dem Opsi-Server installiert. Im Install Ordner habe ich dann die Dateien kopiert und in unser Laufwerk kopiert wo sich unsere Anmeldescripte der User befinden und habe die .cfg datei angepasst auf unsere Umgebung. Hier ist auch der LoginBlocker erstmal deaktiviert also auf 0 gesetzt!

Dann starte ich die ERSTinstallation des Clients über die Anmeldescripte. Hier wird geprüft, ob der Client schon installiert ist, wenn nicht wird er installiert sonst startet er das remote_service_setup einfach nicht.

So hat das bisher auch mit dem preloginloader wunderbar funktioniert. Es gibt aber keinen 64-bit und 32-bit Opsi-client-agent oder? Ich habe nur einen einzigen den ich auf beiden Bit Varianten installiere...

Wenn ich jetzt die Tests mit dem Schalter on und off mache, dann über den Opsi-Config Editor und dort stelle ich das am Anfang installierte Paket des opsi-client-agent auf setup und den Schalter je nachdem...

Soweit klar beschrieben? Achja natürlich sind alle Opsi Pakete absolut up-to-date!

Vielen Dank!!!
Vale
Valentino-46
Beiträge: 280
Registriert: 05 Aug 2011, 14:24

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von Valentino-46 »

Jetzt hab ich NOCH einen Windows XP 64-bit Rechner. Hier lässt sich der Loginblocker nicht mehr ABSCHALTEN. Dh der Schalter bewirkt nichts, Loginblocker ist aber dauerhaft AKTIVIERT :-)
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von d.oertel »

Hi,

damit hier keine Unklarheiten entstehen:
Du redest von XP 64-Bit - korrekt ?
Ich frage deshalb, weil das selten ist und der Loginblocker unter Win7 vollkommen anders funktioniert.
siehe:
http://download.uib.de/opsi4.0/doc/html ... loginblock

Eine Veränderung des Verhaltens des Loginblocker wird bei einer Neuinstallation des opsi-client-agenten weggeschrieben.

Da ich im Home-Office bin habe ich gerade kein XP-64 zur Hand. Es könnte tatsächlich sein, das die 64 Bit Gina.dll Ihre einstellungen im 64 Bit-zweig der Registry braucht.

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Valentino-46
Beiträge: 280
Registriert: 05 Aug 2011, 14:24

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von Valentino-46 »

Ich rede ausschließlich von Windows XP 64-bit!

Ich habe gesehen, dass ihr auf $INST_NTVersion$ < "6.0" prüft und dann bei unter 6.0 auf 32-bit registry umschaltet: Registry started with redirection (32 Bit)
Das MUSS natürlich nicht so sein, dass es beim 64-bit registry eintrag funktioniert...aber ein versuch wärs wert.
Ich kann nachher mal versuchen da selbst dran rumzuspielen. Habe da gestern an EINEM DWORD Wert mal gespielt (LoginBlockerStart) und diesen manuell im 64-bit zweig erzeugt. Ich denke da stecken aber viel mehr einträge dahinter, das kann ich als Laie aber nicht auf anhieb sehen. werde also nachher mal das ins script vom opsi-client-agent genau anschauen und schauen ob ich da was tricksten kann.

Zu Windows 7 und dem LoginBlocker, das habe ich gerade nebenbei noch getestet. Also schalter an und schalter aus usw. Hat jedesmal perfekt funktioniert so wie es soll!
Also reden wir nur von Windows XP 64-bit wo es nicht zu funktionieren scheint.

Danke vorab! Ich meld mich auch sobald ich mehr getestet hab
Valentino-46
Beiträge: 280
Registriert: 05 Aug 2011, 14:24

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von Valentino-46 »

Soooo. Ich hab jetzt im setup.ins Script vom installierten opsi-client-agent Paket direkt editiert. Und zwar werden bei ca. Zeile 1031 folgende Funktionen Aufgerufen:
Registry_opsigina_opsi_Config
Registry_set_loginblocker_start
Die hab ich jetzt von /32bit auf /sysnative gestellt. Als ich dann den Schalter auf OFF gestellt hab, hat er den Loginblocker wieder deaktiviert. Das war also auf dem Windows XP 64-bit Rechner der den Loginblocker die ganze Zeit aktiv hatte...Das hat also funktioniert.

Allerdings habe ich jetzt den Schalter wieder auf ON gestellt und die Gegenprobe gemacht. Jetzt bekomme ich einen Bluescreen mit folgender Meldung:
STOP: c000021a {Fatal System Error}
The Windows Logon Process System Process terminated unexpectedly with a status of 0x00000080 (0x00000000 0x00000000).
The system has been shut down :twisted:

Durch die registry und den Winlogon Eintrag von opsigina.dll auf msgina.dll setzen im abgesicherten modus kann ich die kiste natürlich reparieren. Aber wieso er jetzt auf die Schnauze fliegt ist mir NOCH schleierhaft. Habs jetzt 2x getestet...beidesmal defekt. Aber er scheint ja durch die änderung der registry einträge eine änderung zu spüren. Somit denke ich bin ich auf dem richtigen weg.

Wills jetzt net zu kompliziert machen, aber:
Ganz wichtig ist hier noch zu erwähnen, dass ich ja gestern das ganze LoginBlocker zeug auf einem Windows XP 32-bit Rechner getestet hat, es da auch funktioniert hat. ABER es gab genau die selbe Fehlermeldung auch EINMAL. Da hatte ich aber am setup.ins script NICHTS editiert. Dann hab ichs repariert per msgina.dll registry patch usw. und nochmal versucht dann gings...Hier bei 64-bit WinXP gehts irgendwie net...

Ich hasse Willkür :-) Hier teste ich jetzt mal noch weiter...
Valentino-46
Beiträge: 280
Registriert: 05 Aug 2011, 14:24

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von Valentino-46 »

So. Fertig.
Ich glaub jetzt hab ich den opsi-client-agent gefixed. Bin mal gespannt auf die Prüfung von euch :-) Die Version die ich gefixt habe ist die Aktuellste: 4.0.1-26

Nach langem testen komme ich drauf, dass es eigentlich alles gar kein großer Act ist, aber eine wichtige Kleinigkeit beachtet werden muss.
Grund dass der opsi-client-agent nicht sauber funktioniert ist der, dass Windows XP 32-bit in der setup.ins genau gleich behandelt wird wie Windows XP mit 64-bit und das funktioniert dann so nicht.
Dh Windows XP 64 bit benötigt zwingend auch die ganzen Registry Einträge im 64-bit Zweig! Danach funktioniert auch der Loginblocker usw. So bin ich ja überhaupt erst auf das Problem gestoßen.

Also zuerst habe ich dafür gesorgt, dass er nicht mehr den 32 bit eintrag liest und schreibt, sondern den 64-bit eintrag!

Code: Alles auswählen

Zeile 1030 im Opsi-Client-Agent 4.0.1-26
		Registry_opsigina_opsi_Config /32bit
		Registry_set_loginblocker_start /32bit
	else
		Registry_set_loginblocker_start /32bit
; winXP
zu

Code: Alles auswählen

	Registry_opsigina_opsi_Config /Sysnative
		Registry_set_loginblocker_start /Sysnative
	else
		Registry_set_loginblocker_start /Sysnative
; winXP
Damit ist geklärt, dass er in den 64-bit Registry Zweig schreibt.
Jetzt noch die [sub_read_configuration] patchen, dass der hier auch liest.
ab Zeile 442
Alle Einträge die GetRegistryStringValue32 lauten:

Code: Alles auswählen

set $INST_gina_to_chain$ = GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-client-agent] NextGina")
set $INST_gina_to_chain$ = GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\preloginloader] NextGina")
set $INST_gina_to_chain$ = GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\preloginloader] pathMSGina")
set $INST_old_reg_gina_installed$ = GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\pGina\Opsi] Installed")
set $INST_gina_to_chain$ = GetRegistryStringValue32("[HKEY_LOCAL_MACHINE\SOFTWARE\pGina] pathMSGina")
ändern in

Code: Alles auswählen

set $INST_gina_to_chain$ = GetRegistryStringValueSysnative("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\opsi-client-agent] NextGina")
set $INST_gina_to_chain$ = GetRegistryStringValueSysnative("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\preloginloader] NextGina")
set $INST_gina_to_chain$ = GetRegistryStringValueSysnative("[HKEY_LOCAL_MACHINE\SOFTWARE\opsi.org\preloginloader] pathMSGina")
set $INST_old_reg_gina_installed$ = GetRegistryStringValueSysnative("[HKEY_LOCAL_MACHINE\SOFTWARE\pGina\Opsi] Installed")
set $INST_gina_to_chain$ = GetRegistryStringValueSysnative("[HKEY_LOCAL_MACHINE\SOFTWARE\pGina] pathMSGina")
Jetzt die wichtige Kleinigkeit. Es reicht nicht den Fehler auszubessern, dass er also die 64-bit Einträge liest und schreibt, sondern man muss den Fall abfangen, dass ein Windows XP 64-bit mit der "defekten" Opsi-Client-Install Routine installiert WURDE und jetzt sozusagen ein "defekter Client" existieren kann.

Das habe ich jetzt ganz einfach wie folgt gelöst, denke aber es gibt hier schönere Methoden...:
Ich habe die [sub_read_configuration] im setup.ins Script angepasst und zwar so, dass er als extra if-Bedingung abklärt, ob es sich um Windows XP 64-bit handelt. Ob defekt oder nicht ist meiner Ansicht nach egal, er darf die If-Bedingung immer durchlaufen. Hier aber bitte genauer hinschauen :-) So tief steck ich auch nicht drin im Opsi !

In der setup.ins müssen also folgende Zeilen editiert werden: (ab Zeile 467)

Code: Alles auswählen

if $INST_NTVersion$ < "6.0"
	if ($INST_AktGina$ = "")
		comment "opsigina seems not be installed and we are on a fresh XP"
		set $INST_gina_to_chain$ = "msgina.dll"
	else
		if ($INST_gina_to_chain$ = "")
				comment "opsigina seems not be installed and there is active gina"

;Also hier wird ja die $INST_AktGina$ eingelesen und die $INST_gina_to_chain$ muss gesetzt werden.
;Da er im 64-bit Zweig natürlich keine Einträge findet, weil sie noch nie dort hingeschrieben wurden,
;passiert hier der fehler dass er NextGina = Winlogon Gina setzt und das ist beidesmal opsigina.dll also endlosschleife

				set $INST_gina_to_chain$ = $INST_AktGina$
		else
			comment "opsigina seems be installed and so don't change the gina to chain"
		endif
	endif
endif ; winxp / win2k
ich habe das wie folgt gepatcht

Code: Alles auswählen

if $INST_NTVersion$ < "6.0"
	if ($INST_AktGina$ = "")
		comment "opsigina seems not be installed and we are on a fresh XP"
		set $INST_gina_to_chain$ = "msgina.dll"
	else
		if ($INST_gina_to_chain$ = "")
			if ($INST_NTVersion$ = "5.2")
				comment "opsi-client-agent previously installed into wrong registry tree with 32-bit settings"
				set $INST_gina_to_chain$ = "msgina.dll"
			else
				comment "opsigina seems not be installed and there is active gina"
				set $INST_gina_to_chain$ = $INST_AktGina$
			endif
		else
			comment "opsigina seems be installed and so don't change the gina to chain"
		endif
	endif
endif ; winxp / win2k / winxp64bit
Habe das ganze jetzt auch nochmal etliche Male durchgespielt und es scheint jetzt zu funktionieren!
Bin mal auf eure Rückmeldung dann gespannt. :)
Grüße
Valentino
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von d.oertel »

Hi,

erstmal Danke für die Hinweise.
Sobald ich wieder im Büro bin und eine Testumgebung habe schaue ich mir das an und Pflege es ein.

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Windows 64-bit opsi-client-agent LoginBlocker blockt nic

Beitrag von d.oertel »

Hi,

danke für den Hinweis.

Ist gefixt in der Version 4.0.1-27
zur Zeit:
http://download.uib.de/opsi4.0/experime ... .1-27.opsi

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Antworten