Werte aus der Registry lesen (Vista)
-
Hallo!
Da ich hier eben kein Vista zum Probieren zur Verfügung habe, stellt sich die mir die Frage: Ist es unter Vista noch möglich, als normaler eingeschränkter User Werte unterhalb von HKEY_LOCAL_MACHINE\Software zu lesen?
Um es nochmals deutlich zu sagen: Ich möchte lediglich lesen. Ich öffne den Schlüssel unter 2000/XP momentan mit STANDARD_RIGHTS_READ | KEY_QUERY_VALUE. Ich möchte auf gar keinen Fall etwas verändern. Und ich möchte nicht noch am UAC drehen müssen.
Wenn ich mir die UAC References ansehe (speziell das Topic "Registry Virtualization"), dürfte es eigentlich nicht gehen. Stimmt das?
-
Lesen geht, solange die Schlüssel nicht anderweitig gegen Zugriff geschützt sind.
-
Das Redirect greift also nur beim Schreib-Versuch. Interessant, danke für die Info.
Aber wie genau funktioniert das denn? Wenn ich z.B. Werte geschrieben habe (was ja jetzt durch den Redirect nach HKCU funktionieren sollte), kann ich das ja offensichtlich nicht mehr lesen (da kein Redirect beim Lesen). Wie ist denn das gedacht?
-
Redirect gibt es nur, wenn Deine Anwendung kein UAC-Manifest enthält.
-
Aha, wunderbar. Funktioniert das auch isoliert von der Anwendung in einer Dll (ich weiß ja nicht, wer die Dll verwendet)? Kann ich einfach mit -DISOLATION_AWARE_ENABLED (ResourceID des Manifestes = 2) übersetzen und dann Werte lesen, obwohl der Anwendung selbst das Manifest fehlt?
-
Das "Vista-Manifest" wird nur von der EXE ausgewertet.
Die Virtualisierung funktioniert sowohl lesend als auch screibend... erst wenn im HKCU nix gelesen werden kann, wird in HKLM gelesen...
-
Um also sicher Werte aus einer Dll heraus sicher lesen zu können, muss ich erst eine mir bekannte Anwendung mit Manifest starten, um mir dann per IPC die Werte zu besorgen. Das ist ja fast gar kein Aufwand, nur zum Lesen...
Die Virtualisierung funktioniert sowohl lesend als auch screibend... erst wenn im HKCU nix gelesen werden kann, wird in HKLM gelesen...
Lesen nach dem Zufall, auch nicht schlecht.
-
Wenn du dir unicher bist ob funktioniert dann leg doch sowohl im virtualstore als auch im HKLM einen Wert gleichen Namens ab und fülle ihn mit unterschiedlichen Ihnalt. Wenn du den Wert dann ausliest, weist du ja von wo gelesen wurde.
-
Bevor ich das mache, lege ich das in HKCR.