georgfoc
Goto Top

Multi-line RegSZ Schlüssel sauber exportieren mit der Kommandozeile

Wir haben hier ein Problem beim exportieren eines speziellen Registry Schlüssels. Regedit exportiert einen REG_SZ Wert falsch weil es "\n" als Zeilenumbruch wertet.

Hallo alle zusammen.

Wir haben hier in der Firma ein kleines Problem. Es geht darum, dass unsere Clients sich bei jedem Start mit einem Image abgleichen. Das funktioniert auch alles besten.
Nur wird bei uns auch die Software "Schichtplaner 4" eingesetzt.
Dabei pflegen 1 bis 2 Mitarbeiter die Einstellungen vom Schichtplaner an Ihren Rechnern.

Jetzt wollen wir, diese Einstellungen auch an die anderen Clients verteilen. Und genau hier beginnt das Problem.
Schichtplaner 4 speichert alle Einstellungen in der Registry.
Wenn man nun den gesamten Schlüssel exportieren will, wird ein Wert fehlerhaft exportiert.
Mit dem alten Programm RegEd Free klappt das exportieren hingegen einwandfrei (importieren kann man dann ganz einfach über regedit)

Leider hat RegEd keinen command-line Modus und lässt sich deswegen nicht mit einem Batch-Skript verbinden.

Hier mal zur Veranschaulichung des Problems.
Hier ein Schnippsel der .reg Datei wie sie von RegEd Free erstellt wird:

[HKEY_CURRENT_USER\Software\Schichtplaner\Schichtplaner 4\ScheduleEmployees]
"ViewScheduleEmployeesCoverageFontSize"="100"  
"ViewScheduleEmployeesCoverageInfo"="1"  
"ViewScheduleEmployeesCoverageRows"="-233-7\n-234-7\n-31-7\n-236-7\n-36-7\n-235-7\n-32-7\n-56-5\n-40-5\n-118-5\n-190-5\n-134-5\n-149-5\n-41-5\n-119-5\n-138-5\n-137-5\n-213-5\n-90-5\n-42-5\n-135-5\n-120-5\n-139-5\n-43-5\n-214-5\n-204-75\n-155-75\n-226-75\n-227-75\n-228-75\n-229-75\n-200-119\n-222-119\n-206-81\n-207-81\n-225-81\n-208-81\n-210-81\n-211-81\n-209-81\n-170-81\n-56-65\n-149-65\n-90-65\n-156-65\n-157-65\n-1-65\n-15-65\n-19-65\n-79-65\n-16-65\n-91-65\n-28-65\n-60-65\n-185-65\n-20-65\n-156-3\n-157-3\n-128-3\n-1-3\n-77-3\n-15-3\n-19-3\n-79-3\n-16-3\n-91-3\n-28-3\n-60-3\n-185-3\n-20-3\n-78-3\n-62-2\n-33-2\n-35-2\n-34-2\n-10-5\n-10-65\n-10-26\n-10-21\n-10-1\n-126-65\n-126-1\n-61-105\n-191-105\n-220-123\n-221-123\n-231-105\n-232-105\n-192-98\n-150-80\n-230-80\n-212-103\n-199-3\n-80-26\n-223-26\n-201-26\n-173-26\n-140-26\n-174-26\n-153-26\n-162-26\n-168-26\n-136-26\n-176-26\n-141-26\n-163-26\n-154-26\n-224-26\n-147-26\n-129-26\n-143-26\n-130-26\n-164-26\n-165-26\n-175-26\n-158-26\n-144-26\n-177-26\n-159-26\n-166-26\n-148-26\n-142-26\n-167-26\n-131-26\n-160-26\n-178-26\n-179-26\n-180-26\n-145-26\n-186-26\n-69-26\n-68-26\n-181-26\n-182-26\n-193-26\n-58-26\n-202-26\n-92-21\n-93-21\n-94-21\n-45-21\n-84-21\n-57-21\n-122-21\n-83-21\n-96-21\n-37-21\n-52-21\n-97-21\n-183-21\n-98-21\n-99-21\n-44-21\n-100-21\n-124-21\n-85-21\n-51-21\n-63-21\n-102-21\n-123-21\n-64-21\n-104-21\n-121-21\n-105-21\n-146-21\n-53-21\n-46-21\n-88-21\n-106-21\n-59-21\n-107-21\n-65-21\n-66-21\n-109-21\n-38-21\n-108-21\n-110-21\n-111-21\n-67-21\n-48-21\n-49-21\n-113-21\n-89-21\n-125-21\n-115-21\n-116-21\n-47-21\n-95-21\n-151-21\n-70-21\n-71-21\n-50-21\n-72-21\n-101-21\n-73-21\n-103-21\n-132-21\n-55-21\n-74-21\n-133-21\n-75-21\n-76-21\n-54-21\n-112-21\n-114-21\n-127-21\n-152-21\n-117-21\n-86-61\n-87-61\n-81-55\n-82-55"  
"ViewScheduleEmployeesFontSize"="100"  

Und hier wie es Regedit macht (der Selbe Teil, nur hab ein paar Zeilen weggelassen wegen der Länge)

[HKEY_CURRENT_USER\Software\Schichtplaner\Schichtplaner 4\ScheduleEmployees]
"ViewScheduleEmployeesCoverageFontSize"="100"  
"ViewScheduleEmployeesCoverageInfo"="1"  
"ViewScheduleEmployeesCoverageRows"="-233-7  
-234-7
-31-7
-------
-------
-114-21
-127-21
-152-21
-117-21
-86-61
-87-61
-81-55
-82-55"  
"ViewScheduleEmployeesFontSize"="100"  

Für eine Lösung dieses Problems wäre ich sehr dankbar.

Georg

Content-Key: 147062

Url: https://administrator.de/contentid/147062

Printed on: April 24, 2024 at 02:04 o'clock

Member: rubberman
rubberman Jul 16, 2010 at 15:02:13 (UTC)
Goto Top
Hallo Georgfoc und willkommen im Forum.

Das Problem ist mit den von dir geposteten *.reg Exporten noch nicht zu klären.
Ich habe einfach mal versucht den ersten Code zu importieren, mit dem Erfolg, dass der Wert "ViewScheduleEmployeesCoverageRows" gar nicht erst importiert wurde. Nachdem ich den Wert händisch angelegt habe und die Daten aus dem ersten Code zugewiesen habe, habe ich diesen noch einmal exportiert. Dabei wurden die Backslashes korrekt mit einem zweiten maskiert:
"ViewScheduleEmployeesCoverageRows"="-233-7\\n-234-7\\n-31-7\\n-236-7\\n-36-7...  

Worauf ich hinaus will:
Bitte schau dir nochmal genau im Registryeditor an, welchen Datentyp der Wert hat und wie der Wert tatsächlich aussieht.

Grüße
rubberman
Mitglied: 60730
60730 Jul 16, 2010 at 15:03:51 (UTC)
Goto Top
Moin,

Wenn man nun den gesamten Schlüssel exportieren will, wird ein Wert fehlerhaft exportiert.
welchen der wege nehmt Ihr denn um die ex und importieren?

Ich würds mit:
reg export "hkcu\Software\Schichtplaner\Schichtplaner 4\ScheduleEmployees" C:\schichtplaner4.reg
versuchen - btw - so mach ich das reibekuchenlos face-wink.
bzw:
regedit /s C:\schichtplaner4.reg

Gruß
Mitglied: 60730
60730 Jul 22, 2010 at 12:55:58 (UTC)
Goto Top
Moin,
was gibts denn nun neues zum Thema?

  • abhaken?
  • kein treffer dabei, weil?
  • vergessen?

Gruß
Member: Georgfoc
Georgfoc Jul 22, 2010 at 20:10:09 (UTC)
Goto Top
Sorry dass ich mich so lange nicht gemeldet habe.
Bin leider diese Woche komplett mit der Uni beschäftigt und kann mich erst nächsten Montag um das Problem kümmern.

Ich werde dann hier sofort berichten.
Member: Georgfoc
Georgfoc Jul 26, 2010 at 12:54:39 (UTC)
Goto Top
Also ich habe das mit dem Befehl:

reg export "hkcu\Software\Schichtplaner\Schichtplaner 4\ScheduleEmployees" C:\schichtplaner4.reg

gerade getestet. Aber genau das selbe Problem.

Ich habe mal einen Screenshot erstellt vom Regeditor. Da sieht man, dass die Werte auch "komisch" aussehen.
Der Screenshot ist von einem Rechner, auf dem alles passt (sprich das würde ich gerne auf einen anderen Rechner bekommen).

http://img530.imageshack.us/img530/1179/regscreenshot.jpg

MFG
Georg

p.s. Habe schon einige Wege versucht. Auch direkt über den Regeditor. Per Commandline. Aber immer falsch...
Member: Georgfoc
Georgfoc Aug 09, 2010 at 13:58:26 (UTC)
Goto Top
So allmählich ergibt das alles einen Sinn.
In dem Screenshot sieht man, dass dort ein kleines Quadrat ist.
Dieses Quadrat per Copy&Paste in Notepad++ ergibt ein CR LF.

Und genau da ist ja das Problem. Der Programmierer vom "Schichtplaner" hat mehrere Zeilen in einem Reg_SZ Wert eingetragen. Dies ist auch kein Problem.

Allerdings funktioniert der import nicht mehr, weil bei ersten 0A (Hex) der Import abbricht.

Jetzt hat mir jemand den Tip gegeben, man könnte das importieren per VB Script erledigen, weil man damit wieder eine "mehrzeilige" Reg_SZ erstellen kann. Aber ich kenne mich nicht mit VB aus.

Oder gibt es eine Möglichkeit der Wert der Reg_SZ in Hexadezimalform auszulesen und auch so wieder einzulesen.
Sprich wie sage ich dem Windows Registry Editor das "0A" einfach in den Wert ist, und nicht das ENDE des Wertes bedeutet?

Ich hoffe man versteht so in etwa was ich sagen wollte. Keine Ahnung wie man das besser ausdrücken könnte.