Benutzer mit den meisten Antworten
Registry-Settings als Datei einlesen nach HKEY_CURRENT_USER als Administrator für einen anderen User

Frage
-
Hallo Forumsteilnehmer,
für den Menüpunkt 'Rechnerwechsel' im Programm möchte ich alle Einstellungen, die unter
HKCU/Software/<company>/<software> gespeichert sind, in einer Datei abspeichern und später auf dem neuen Rechner wieder einlesen.Dafür habe ich ein kleines Hilfsprogramm geschrieben, das vom Hauptprogramm gestartet wird und Admin-Rechte anfordert, und ich so auf die Funktion RegSaveKey zum Speichern der Werte zugreifen darf.
Auch das Zurückspielen funktoniert so mittels RegRestoreKey eigentlich problemlos.
Nur, dass ich jetzt scheinbar nicht in HKCU des angemeldeten Users, sondern in HKCU des Admins schreibe. Das bedeutet die Werte werden nur gefunden, wenn ich das Hauptprogramm als Admin starte.
Wie kann ich mit Admin-Rechten den HKCU des Users direkt beschreiben bzw. finden, damit das Admin-Programm die Registry so zurückschreibt, dass es für den angemeldeten User gilt?
Danke für eventuelle Hilfe und Antworten im Voraus.
Gruß Sven
Antworten
-
Hallo Sven,
HKEY_CURRENT_USER sagt ja schon vom Namen, dass es für den aktuellen User gilt. Und wenn ein Prozess als Admin gestartet wird, ist das eben auch der Admin.
Es gibt daneben aber auch noch HKEY_USERS und dort einen Node mit der SID jedes Benutzers. Ggfs. wäre es sinnvoller, dort reinzuschreiben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan Falz Donnerstag, 5. November 2015 15:36
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 10. November 2015 14:16
- Als Antwort markiert Sven Hansen177 Mittwoch, 11. November 2015 02:18
-
Die einzige Möglichkeit die ich sehe ist die Zweige von HKEY_USERS zu befüllen. Dazu muß aber der User schon auf dem entsprechenden PC gewesen sein.
Mit einem Benutzer der Admin Rechte hat, kann man die Zweige in HKEY_USERS auch beschreiben.
Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 10. November 2015 14:16
- Als Antwort markiert Sven Hansen177 Mittwoch, 11. November 2015 02:17
Alle Antworten
-
Hallo Sven,
HKEY_CURRENT_USER sagt ja schon vom Namen, dass es für den aktuellen User gilt. Und wenn ein Prozess als Admin gestartet wird, ist das eben auch der Admin.
Es gibt daneben aber auch noch HKEY_USERS und dort einen Node mit der SID jedes Benutzers. Ggfs. wäre es sinnvoller, dort reinzuschreiben.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
- Bearbeitet Stefan Falz Donnerstag, 5. November 2015 15:36
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 10. November 2015 14:16
- Als Antwort markiert Sven Hansen177 Mittwoch, 11. November 2015 02:18
-
Die einzige Möglichkeit die ich sehe ist die Zweige von HKEY_USERS zu befüllen. Dazu muß aber der User schon auf dem entsprechenden PC gewesen sein.
Mit einem Benutzer der Admin Rechte hat, kann man die Zweige in HKEY_USERS auch beschreiben.
Best regards
Bordon
Note: Posted code pieces may not have a good programming style and may not perfect. It is also possible that they do not work in all situations. Code pieces are only indended to explain something particualar.- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Dienstag, 10. November 2015 14:16
- Als Antwort markiert Sven Hansen177 Mittwoch, 11. November 2015 02:17
-
Besten Dank für Eure Antworten. Ich glaube, ich komme jetzt zurecht.
Da der Elternprozess, vom benötigten User ausgeführt wird, kann man mit GetUserName, LookupAccountName und ConvertSidToStringSid den benötigten Schlüssel (Sid) erzeugen und als Parameter an den Kind-Admin-Prozess übergeben. Und so sollte dieser an die richtige Stelle von HKEY_USERS kopieren können.
Gruß
Sven
Nachtrag:
Das Problem selbst war anders als gedacht. RegSaveKey/RegRestoreKey speicherten die SID des Kontos mit ab und beim Wiederherstellen auf dem anderen Rechner waren die Schlüssel nun in der Registry für ein unbekanntes Konto, das die benötigten Berechtigungen besaß, erstellt worden.Versuche mit RegSaveKeyEx, wo man unkomprimiert speichern darf, scheiterten leider. Die erzeugten Dateien hatten immer 0 Bytes. Ich habe dann aufgegeben udn benutze nun regedit.exe. Mit dem scheinbar undokumentiertem Parameter /e lässt sich auch ein Export bewerkstelligen. So spare ich mir auch das Hilfsprogramm und alles läuft bestens.
- Bearbeitet Sven Hansen177 Mittwoch, 11. November 2015 02:16 Nachtrag