AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Registry eines anderen Benutzers bearbeiten
Thema durchsuchen
Ansicht
Themen-Optionen

Registry eines anderen Benutzers bearbeiten

Offene Frage von "Der schöne Günther"
Ein Thema von Der schöne Günther · begonnen am 20. Feb 2017 · letzter Beitrag vom 20. Feb 2017
Antwort Antwort
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Registry eines anderen Benutzers bearbeiten

  Alt 20. Feb 2017, 19:50
Als gutgläubiger Mensch könnte man meinen unter HKEY_USERS stünden die HKCU-Hives aller lokalen Benutzer. Es sind aber nur die eingeloggten. Ist ja auch sinnvoll, das spart Hauptspeicher.

Ich möchte nun in der Registry von mehreren lokalen Nutzern Änderungen vornehmen. Ich habe natürlich Adminrechte.

Ich sehe drei Möglichkeiten. Da ich noch nicht angefangen habe brauche ich keine technische Hilfe, ich möchte nur Rat welche der drei Möglichkeiten man nehmen sollte:
  1. NTUSER.dat der Nutzer über reg.exe einladen
  2. User Impersonation, dann LoadUserProfile(..)
  3. ActiveSetup

1) NTUSER.dat über reg.exe einladen
Über die reg.exe (fester Bestandteil von Windows) ließe sich (z.B hier beschrieben) die NTUSER.DAT eines anderen Nutzers irgendwo in die aktuelle Registry reinmappen. Ich könnte den Zweig dort bearbeiten und wieder entladen. Und wäre schon fertig.

2) User Impersonation, dann LoadUserProfile(..)
Da ich auch die Passwörter der entsprechenden Accounts hätte würde ich komplett über die WinAPI:
- Mittels LogOnUser das Token holen
- ImpersonateLoggedOnUser nehmen
- Dann mit LoadUserProfile den Hive einladen
- Meine Änderungen an HKEY_USERS\[SID] vornehmen
- Und später wieder mit UnloadUserProfile entladen


3) ActiveSetup
Dies scheint genau dasd zu sein was ich suche. Allerdings ist das nirgendwo von Microsoft dokumentiert, es gibt nur diesen halb-offiziellen Blog-Beitrag. Es ist ein Eintrag in HKLM der bei jedem Benutzer (anscheinend einmalig) nach dem nächsten Login ausgeführt wird. Hier könnte man die Änderung in eine eigene .exe auslagern die dann einmalig ausgeführt wird.


Ich persönlich bin für Lösung zwei, aber vielleicht gibt es ja schlaue Gründe für etwas anderes?
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#2

AW: Registry eines anderen Benutzers bearbeiten

  Alt 20. Feb 2017, 19:54
Die Klasse TRegistry bietet ebenfalls eine Methode, einen Hive zu laden (und natürlich auch eine zum Entladen); das müssten LoadKey und SaveKey sein.

Grüße
Dalai
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Registry eines anderen Benutzers bearbeiten

  Alt 20. Feb 2017, 19:57
Tatsächlich:

http://docwiki.embarcadero.com/Libra...gistry.LoadKey

Toll, vielen Dank. Das schaue ich mir auch noch an, das wäre anscheinend ein schöner Wrapper für Lösung 1).
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz