sib1268
Goto Top

Registry - Regelung Pfadangaben

Hallo,

ich bin neu hier und habe gleich eine grundlegende Frage zum
Windows Registrierungseditor.

Durch einen Zwischenfall mit einem Trojaner sind mir in der Registry
einige Pfadangaben verloren gegangen.
Jetzt wollte ich insbesondere die (Image-)Paths fixen und stehe vor einem Problem:

Durch einige Recherchen wusste ich, dass man für reg.-Dateien in der
Regel Pfade mit Doppelbackslash und einem @-Zeichen angibt.

Wie verhält es ich nun aber wenn ich die Registry mit einem geladenen
Profil bearbeiten möchte?
(Anmerkung: Das System ist offline, die Bearbeitung erfolgt über eine Boot CD,
die zu bearbeitenden Schlüssel wären HKLM\SYSTEM und HKLM\SOFTWARE)

Ich würde mich über jede Hilfe freuen.


Zusatz:

Das betreffende Betriebssystem ist ein Vista (32bit) Home Premium.

Content-ID: 172431

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

Ausgedruckt am: 26.11.2024 um 15:11 Uhr

99045
99045 01.09.2011 um 14:30:35 Uhr
Goto Top
Hallo, und willkommen im Forum.

Was du da gelesen hast, stimmt nur teilweise. Richtig ist, dass in .reg-Dateien (und nur da) Backslashes für Pfadangaben verdoppelt werden müssen. Das @-Zeichen wird für den (Standard)-Bezeichner (also den default-Eintrag) verwendet und hat mit den Pfaden nichts zu tun.


Du kannst aber mit der Vista-Installations-CD arbeiten und dort über die Computerreparaturoption in die > Eingabeaufforderung starten. Von dort lässt sich der Registry-Editor aufrufen, der normalerweise in
C:\Windows\System32\regedit.exe zu finden ist.

Du musst dann über die Auswahl von HKEY_LOCAL_MACHINE jeweils (nacheinander) über Datei > Struktur laden aus dem Windows-Verzeichnis C:\Windows\System32\config die Datei SYSTEM laden, Namen für den Zweig vergeben, dann kannst du in dem Zweig ganz normal suchen und ihn bearbeiten. Anschließend den Keypfad über Struktur entladen wieder zurückschreiben und die gleiche Prozedur für die Datei SOFTWARE wiederholen. Damit kannst du dann die Einträge ganz normal ohne doppelte Backslashes bearbeiten.

Allerdings halte ich eine "Reparatur" nach einem Trojanerbefall nicht für sinnvoll, da das System nicht mehr vertrauenswürdig ist. In solchen Fällen würde ich eine Neuinstallation bzw. die Rücksicherung eines zuvor hoffentlich erstellen Backups bevorzugen und vor allen Dingen alle Pass- und Kennwörter ändern.

Gruß
Sib1268
Sib1268 01.09.2011 um 15:19:39 Uhr
Goto Top
Hi,

danke erstmal für die Info.
Wenn es demzufolge nur in reg.-Dateien diese Zeichensetzung geben darf,
dann wäre diese Angabe (im Registrierungseditor) falsch:

Pfad: HKLM\SOFTWARE\Microsoft\Jet\4.0Engines\xBase (als Beispiel)
"X:\\Windows\\system32\\namederdll.dll" [-> Reg_Sz - Schlüssel]

(Habe die Anführungszeichen nur für die Eingrenzung der Angabe hinzugefügt,
ferner ist "X:" nur als Platzhalter gedacht für entprechenden Laufwerksbuchstaben)

Dieselbe Regel würde auch für eine erweiterbare Zeichenfolge (Reg_Expand) gelten oder?

Bsp. für weitere falsche Pfadangabe:

Pfad: HKLM\SOFTWARE\Microsoft\Internet Account Manager
"%SystemRoot%\\system32\\namederdll.dll" [-> Reg_Expand - Schlüsel]
99045
99045 01.09.2011 um 18:09:17 Uhr
Goto Top
Es ist richtig, dass es falsch ist. face-smile
Sib1268
Sib1268 01.09.2011 um 19:37:55 Uhr
Goto Top
Okface-smile

Dann würde ich gerne etwas zu einer Auffälligkeit im MMC-Zweig fragen.

Dort steht z.B. folgendes:

Pfad: HKLM\SOFTWARE\Microsoft\MMC\SnapIns\{lange GUID}
"@%SystemRoot%\\system32\\namederdll.dll,-Zahl"

woanders, selber Zweig

Pfad: HKLM\SOFTWARE\Microsoft\MMC\SnapIns\{lange GUID}
"@namederdll.dll,-Zahl" (Anführungszeichen wieder nur zur Eingrenzung)

Ist das normal, dass einige Zweige keinen kompletten Pfad (und sei es nur
Einer mit einer Variable) brauchen?
99045
99045 01.09.2011 um 19:45:18 Uhr
Goto Top
Damit kann ich nichts anfangen, das sind weder vollständige Angaben direkt aus der Registry noch Zeilen aus einer .reg-Datei.
Aber dass Daten keinen kompletten Pfad enthalten, kann durchaus normal sein.
Sib1268
Sib1268 01.09.2011 um 20:44:26 Uhr
Goto Top
Ok, dann nehme ich zwei Beispiele:

Pfad: HKLM\SOFTWARE\Microsoft\MMC\SnapIns\{2f893820-7089-46cc-a6e8-c4aae45f151b}
Name: NameStringIndirect
Wert: "@%SystemRoot%\\system32\\comres.dll,-2950"


Pfad: HKLM\SOFTWARE\Microsoft\MMC\SnapIns\{8EAD3A12-B2C1-11d0-83AA-00A0C92C9D5D}
Name: NameStringIndirect
Wert: "@dmdskres.dll,-65534"

(beide sind REG_SZ)
99045
99045 01.09.2011 um 20:56:52 Uhr
Goto Top
(beide sind REG_SZ)

Nein, der 1. ist REG_EXPAND_SZ und hat keine doppelten Backslashes. Der 2. ist korrekt so.

So weit, so gut. Hilfe zu Korrekturen nach Trojanerbefall darfst du allerdings von mir nicht weiter erwarten. Ich habe dazu eine ganz spezielle Meinung und Einstellung face-wink

Gruß
Sib1268
Sib1268 01.09.2011 um 21:07:35 Uhr
Goto Top
Hm, den Fehler der Zeichenfolge habe zu spät bemerkt ;)


So weit, so gut. Hilfe zu Korrekturen nach Trojanerbefall darfst du allerdings von mir nicht weiter erwarten. Ich habe dazu eine
ganz spezielle Meinung und Einstellung face-wink[...]

Das ist mir auch klar, ist auch nicht mein Anliegen. Es geht mir darum die Registry zu (einem gewissen Teil) zu verstehen.
Wenn du gestattest hätte ich noch zwei Fragen;)
99045
99045 01.09.2011 um 21:14:19 Uhr
Goto Top
Wenn du die Registry verstehen möchtest, hätte ich einen guten Link (mit Fortsetzung):
http://support.microsoft.com/kb/822890/de

Fragen darfst du aber trotzdem.
Sib1268
Sib1268 01.09.2011 um 22:11:10 Uhr
Goto Top
Der erwähnte Link ist mir nicht neu face-smile

Bei einer Parameterangabe -- die bereits Erwähnten waren Ordnungszahlangaben(?) --
benötigen erweiterte Zeichenfolgen, im Gegensatz zu "normalen" Zeichenfolgen, keine
Anführungszeichen in der Pfadangabe, oder?

Bsp. Reg_Expand SZ:

Pfad: HKLM\SYSTEM\CurrentControlSet\Services\CryptSvc
Name: ImagePath
Wert: "%Systemroot%\System32\svchost.exe -k NetworkService"

Pfad: HKLM\SYSTEM\CurrentControlSet\Services\COMSysApp
Name: ImagePath
Wert: "%SystemRoot%\system32\dllhost.exe /Processid:{02D4B3F1-FD88-11D1-960D-00805FC79235}"

Pfad: HKLM\SOFTWARE\Classes\txtfile\shell\print\command
Name: (Standard)
Wert: "%SystemRoot%\system32\NOTEPAD.EXE /p %1"


Bsp. Reg_SZ:

Pfad: HKLM\SOFTWARE\Classes\*\shell\sdfiles\command
Name: (Standard)
Wert: ""C:\Program Files\Spybot - Search & Destroy\SDFiles.exe" "%1" /ask"

Pfad: HKLM\SOFTWARE\Classes\DVD\shell\play\command
Name: (Standard)
Wert: ""C:\Program Files\InterVideo\DVD8\WinDVD.exe" %1"

Pfad: HKLM\SOFTWARE\Classes\.3gp\Shell\Open\Command
Name: (Standard)
Wert: ""C:\Program Files\Media Player Classes\mplayerc.exe" "%1""

Daran würde sich die nächste Frage anschließen:

Müssen alle Zeichenfolgen (Reg_SZ) zwangsläufig in Anführungszeichen stehen,
wenn die Anwendungen mit Parametern gestartet werden?

Bsp.
Pfad: HKLM\SOFTWARE\Microsoft\MigWiz
Name:AutoPlayCmdLine
Wert: "C:\\Windows\\System32\\migwiz\\migwiz.exe /magicusb" (-> Fehler bei den Backslashes
ist nun ausgemacht, jedoch steht diese Pfadangabe, ohne Anführungszeichen, im Gegensatz zu
den Reg_SZ-Beispielen in der ersten Frage.)

(Anmerkung: Die z.T. äußeren Anführungszeichen sind von mir wieder nur zur Eingrenzung gesetzt.)
99045
99045 01.09.2011 um 22:31:39 Uhr
Goto Top
Pfadangeben müssen immer dann in Anführungszeichen gesetzt werden, wenn sich im Pfad ein Leerzeichen befindet. Parameter wie z. B. "%1" müssen ebenfalls in Anführungszeichen gesetzt werden.
Dabei ist es egal, ob es sich um REG_SZ oder REG_EXPAND_SZ handelt. REG_EXPAND_SZ unterscheidet sich nur dadurch, dass in letzterem Environmentvariablen verwendet werden.

Unter XP habe ich in keinem Service-Eintrag Pfade in Klammern, unter Vista wird es deshalb so sein, weil sich ja bereits in "Program Files" ein Leerzeichen befindet.
Ansonsten dürte die Angabe in der Registry auch davon abhängen, ob der Wert für das Programm oder die Funktion, die damit arbeitet, als ein Übergabeparameter betrachtet wird. Dann muss der gesamte Wert in Anführungszeichen stehen, wenn er aus mehreren Teilen besteht.

Vielleicht kannst du das im Technet verifizieren und findest dort genauere Informationen. Meine Erläuterungen sind so, wie ich mir lögisch vorstelle.
Sib1268
Sib1268 01.09.2011 um 23:01:40 Uhr
Goto Top
Okay, dann wären meine Fragen soweit geklärt.

Ein großen Dank für deine Ausführlichkeit und Geduld face-smile

Vielleicht kannst du das im Technet verifizieren und findest dort genauere Informationen. Meine Erläuterungen sind so, wie >ich mir lögisch vorstelle.

Ab und zu gibt es dort etwas Brauchbares aber leider keine Übersicht oder gute Erklärung.


Ach so, eine Antwort bin ich dir noch schuldig geblieben.
Dieses System wird vielleicht nicht mehr ins Internet kommen, mal sehen wie viele
Viren und Rootkit-Scanner ich nochmal darüber jagen lassen werde ;)

Mfg

Sib1268
PeterleB
PeterleB 27.06.2020 um 19:26:14 Uhr
Goto Top
Hallo,

der Thread ist zwar schon sehr alt, aber vielleicht liest jemand doch meine Frage:

wenn ich in der Registry folgende Angabe verwende:
"C:\Users\XXXXXXX\AppData\Local\Programs\Microsoft VS Code\Code.exe" "%L"  

funktioniert es (shell-command-Eintrag Kontextmenü für VBS-Datei als Beispiel)
schreibe ich:
""%LOCALAPPDATA%\Programs\Microsoft VS Code\Code.exe" "%L""  

wird das Programm nicht direkt aufgerufen, sondern der Explorer fragt nach einem Programm, mit dem die vbs geöffnet werden soll.

Wo ist der Fehler?

Gruß
Peter