Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Antworten
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Beitrag von mdecker »

Hallo zusammen,

Ich bin mir noch nicht sicher, ob es sich um einen Bug oder ein Feature handeln soll, gehe derzeit aber eher von einem Bug aus.

Das Problem ist das Folgende: Ich versuche einen Registry-Wert vom Typ REG_SZ zu erstellen, der ein Prozentzeichen enthält. Es handelt sich dabei um ein Ausgabeprofil für TexnicCenter, das ich gerne per Default mit verteilen möchte. Einige der zu setzenden Registry-Werte enthalten Variablen zur internen Aufrufsyntax von Kommandos durch TexnicCenter, beispielsweise "%bm". Versuche ich nun, in einer Registry-Sektion diesen Wert als REG_SZ anzulegen, so wird der Typ immer automatisch auf REG_EXPAND_SZ geändert, da winst anscheinend meint, es handle sich um eine Umgebungsvariable von Windows. Das sieht für mich nach einem Fehler in der Programmlogik aus, da Umgebungsvariablen auch ein abschließendes "%" enthalten.

Außerdem halte ich es für eigentümlich, dass eine solche Änderung überhaupt einfach automatisch vorgenommen wird - selbst wenn es sich um eine Umgebungsvariable handelt könnte es ja gute Gründe geben, warum es kein EXPAND_SZ sein soll... Selbst durch explizite Angabe von "REG_SZ:" in der Wertzuweisung lässt sich winst nicht umstimmen.

Ich habe nun schon Stunden ohne Erfolg damit zugebracht, winst irgendwie auszutricksen und "%bm" trotzdem in einen REG_SZ-Wert zu bekommen. Es ist leider auch keine Alternative, mit dem REG_EXPAND_SZ zu leben, da dies an anderen Stellen in TexnicCenter dann Probleme macht.

Ich habe dies sowohl mit winst 4.11.2.3 wie auch mit 4.11.2.5 mit gleichem Ergebnis getestet. Für Hilfe wäre ich sehr dankbar.

Grüße,
Michael
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Beitrag von d.oertel »

Hi,

ja - bug bestätigt.

Ist definitiv so, das der winst wenn der String ein '%' enthält den Datentyp eigenmächtig auf REG_EXPND_SZ ändert.

Mal sehen wie ich das ändere ohne das bestehende scripts plötzlich die krise kriegen.......

Als Workaround sehe ich kurzfristig nur mit
regedit /s
eine regdatei einlesen die den key korrekt beschreibt.

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Beitrag von mdecker »

Hi,

ich sehe noch nicht, wie regedit /s mir helfen kann. Ich wäre auf einen einfachen REG-File Import ausgewichen, aber ich würde gerne von einigen internen Variablen Gebrauch machen, um die korrekten Pfade zusammenzubauen (z.B. mit Hilfe von %ProgramFiles32Dir%).

Wie wäre es denn, wenn winst den Typ nur dann automatisch anpasst, wenn man nicht explizit einen Typ vorschreibt? Ich würde erwarten, dass die Scripts, die auf die automatische Konvertierung nach REG_EXPAND_SZ bauen, nicht explizit REG_SZ drin stehen haben, sondern überhaupt keinen expliziten Typ.
Deswegen könnte es ja mögicherweise eine Lösung sein, wenn implizit weiter wie gehabt umgewandelt wird und nur bei expliziter Angabe von REG_SZ:"Wert" dieser Typ auch erhalten bleibt.

Gruß,
Michael
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Beitrag von d.oertel »

Hi,

klar werde ich den Bug fixen.

Das mit den 2 %-Zeichen ist der eine Ansatz und die Idee mit dem unterschied zwischen der expliziten Angebe von Reg_sz oder nicht gefällt mir auch.

Morgen haben wir Entwicklersitzung - wahrscheinlich kann ich morgenabend einen fix schreiben.

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: Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Beitrag von d.oertel »

Hi,

hier liegt der gefixte opsi-winst:
http://download.uib.de/opsi4.0/experime ... 2.7-1.opsi

changelog:
opsi-winst (4.11.2.7) stable; urgency=low

* Registry: set: Do not change data typ of reg_sz to reg_expand_sz if reg_sz is explict given
even if there is a % char in the string.
If no data typ is given reg_sz will be used as default
but if there is a % char in the string, reg_expand_string will be used.

-- Detlef Oertel <d.oertel@uib.de> Tue, 27 Mar 2012:15:00:00 +0200

Rückmeldung willkommen.

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
mdecker
Beiträge: 85
Registriert: 26 Mär 2012, 16:20

Re: Registry: Typ REG_SZ wird automatisch zu REG_EXPAND_SZ

Beitrag von mdecker »

Hi,

danke, die neue Version scheint zu funktionieren.

Allerdings ist mir da gerade im Zusammenhang mit TexnicCenter noch ein neues Problem aufgefallen: Einige Registry-Werte von TexnicCenter enthalten mehrere Zeilen. Lässt sich das über ein Winst-Script irgendwie zuweisen? Den String einfach über mehrere Zeilen laufen zu lassen gibt jedenfalls nur Syntaxfehler und im Manual konnte ich dazu bis jetzt nichts finden.

Gruß,
Michael
Antworten