Home » Tutorials » Object Pascal/RTL » Berücksichtigung von Benutzerrechten

Berücksichtigung von Benutzerrechten

Registry

Ähnliche Probleme gibt es in der Registry. Normalerweise hat ein Benutzer nur auf seine persönlichen Einstellungen Lese- und Schreibzugriff. Diese befinden sich unterhalb von HKEY_CURRENT_USER.
Benutzerübergreifende Daten befinden sich unter HKEY_LOCAL_MACHINE. Ein normaler Benutzer hat hier nur Lese-, aber keine Schreibrechte. Erzeugt man in einer Delphi-Anwendung ein Objekt der Klasse TRegistry, versucht Delphi jedoch immer Vollzugriff zu bekommen. Bei Normalusern und dem Pfad HKEY_LOCAL_MACHINE führt das zu einer Fehlermeldung. Um Delphi mitzuteilen, dass wir nur Lesezugriff haben wollen, müssen wir den Parameter KEY_READ beim Instanzerzeugen mitgeben:

var reg: TRegistry;
begin
  reg := TRegistry.Create(KEY_READ);

Alternativ bliebe noch der manuelle Weg: Über das System-Tool „regedit“ lassen sich die Berechtigungen für einzelne Registry-Zweige verändern und somit auch allen Benutzern Vollzugriff auf HKEY_LOCAL_MACHINE geben. Aber das sollte eine Anwendung nicht voraussetzen.