AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

Ein Thema von amigage · begonnen am 15. Dez 2011 · letzter Beitrag vom 7. Jan 2012
Antwort Antwort
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#1

Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 15. Dez 2011, 16:02
Hallo liebe Delphi-Gemeinde,

ich habe das Problem, dass ich einen SQL-Dienst stoppen und dann wieder starten möchte.
Dies ist soweit kein Problem.

Problematisch wird es, wenn ich ein eingeschränkter Nutzer bin, die demzufolge Software als Nutzer mit Adminrechten starten muss. Denn dann kann ich zwar auch den Dienst starten und stoppen. Wenn mein Programm aber gleichzeitig die Registry auslesen muss (HKEY_CURRENT_USER), erhält es die Werte der Admin-Registry und nicht des eingeschränkten Nutzers.

Wie kann man das technisch umgehen, dass man trotz angeforderter Adminrechte auf die richtige Registry zugreift? Geht das überhaupt?

amigage
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.375 Beiträge
 
Delphi 12 Athens
 
#2

AW: Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 15. Dez 2011, 16:09
Vermutlich über MSDN-Library durchsuchenRegOpenCurrentUser, oder den Rootpfad des entsprechenden Users selber suchen.

Das erstellte Key-Handle (HKEY) kann man dann notfalls ein ein TRegistry übergeben und dort weiter nutzen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (15. Dez 2011 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 15. Dez 2011, 16:30
Problematisch wird es, wenn ich ein eingeschränkter Nutzer bin, die demzufolge Software als Nutzer mit Adminrechten starten muss. Denn dann kann ich zwar auch den Dienst starten und stoppen. Wenn mein Programm aber gleichzeitig die Registry auslesen muss (HKEY_CURRENT_USER), erhält es die Werte der Admin-Registry und nicht des eingeschränkten Nutzers.
Wie sieht dies denn konkret aus?
Du bist als User1 angemeldet und benutzt runas um als Admin ein weiteres Programm zu starten?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#4

AW: Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 15. Dez 2011, 17:21
Vielen lieben Dank Euch beiden, für die schnelle Reaktion.

Du bist als User1 angemeldet und benutzt runas um als Admin ein weiteres Programm zu starten?
Genauso siehts aus. Ich habe durch den Hinweis auf Hier im Forum suchenRegOpenCurrentUser mal meine Funktion versucht umzubasteln, aber irgendwie bekomme ich bei User1 und runas Admin immer noch die Werte des Admin. Wo liegt bei mir der Fehler?

Delphi-Quellcode:
function ReadRegistryValue(MyHKey : Byte; RegKey : String; RegValue : String) : String; overload;
var
  Reg : TRegistry;
  RegOpenCurrentUser: TRegOpenCurrentUser;
  hkResult: HKEY;
begin
  Result := '';
  Reg:=TRegistry.Create;
  try

    if MyHKey = 1 then
    begin
      RegOpenCurrentUser := GetProcAddress(GetModuleHandle('ADVAPI32.DLL'), 'RegOpenCurrentUser');
      if Assigned(RegOpenCurrentUser) then
        if RegOpenCurrentUser(KEY_READ, @hkResult) <> ERROR_SUCCESS then
        begin
          showmessage('geht nicht!');
          exit;
        end;
    end;

    Case MyHKey of
      1: Reg.RootKey:= hkResult; //HKEY_CURRENT_USER;
      2: Reg.RootKey:= HKEY_LOCAL_MACHINE;
      3: Reg.RootKey:= HKEY_CLASSES_ROOT;
    end;

    Reg.Access := KEY_READ;
    if Reg.OpenKey(RegKey, False) then
      If Reg.ValueExists(RegValue) then
      begin
        try
          Result := Reg.ReadString(RegValue);
        except
          Result := '';
        end;
      end;

  finally
    Reg.CloseKey;
    Reg.Free;
  end;
end;
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#5

AW: Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 16. Dez 2011, 07:22
Hat sich erledigt. Es funktioniert!

Es lag daran, dass ich den Admin und den eingeschränkten Nutzer gleichzeitig offen hatte. Jetzt, nachdem ich neu gebootet habe und nur den eingeschränkten Nutzer geöffnet habe, arbeitet die Software so, wie sie soll.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.375 Beiträge
 
Delphi 12 Athens
 
#6

AW: Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 16. Dez 2011, 08:43
Jetzt, nachdem ich neu gebootet habe und nur den eingeschränkten Nutzer geöffnet habe, arbeitet die Software so, wie sie soll.
Ist aber auch eine böse Falle, vorallem wenn es bei einem Terminl-Server genauso ist.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
274 Beiträge
 
Delphi 12 Athens
 
#7

AW: Zugriff auf Registry eines eingeschränkten Benutzerkontos mit Adminrechten

  Alt 16. Dez 2011, 10:26
Mist, leider zu früh gefreut! Da mein Beispielprogramm bei meinem letzten Test nicht die Werte des Admin angezeigt hat, war ich der Meinung, jetzt greift er richtig zu.

Falsch gedacht: denn nachdem ich jetzt nach real existierenden Registryeinträgen des eingeschränkten Nutzers mit Adminrechten gesucht habe, erhalte ich nicht die Werte. Der Grund: Windows legt einen temporären Nutzer an (erkennbar an C:\Users\TEMP\) und greift damit wahrscheinlich auf eine nicht exisierende Registry zu.

Verlasse ich den eingeschränkten NUtzer und starte ihn neu, ist der TEMP-User wieder weg. Bis ich wieder versuche, mit meinem Programm und Adminrechten auf die Registry zuzugreifen.

Muss ich noch irgendetwas beachten? Ich bin schon fast am Verzeifeln und würde mich über jeden nützlichen Hinweis freuen.

@himitsu:
Zitat:
oder den Rootpfad des entsprechenden Users selber suchen.
Wie kann ich erfahren, welcher Pfad für den eingeschränkten User verantwortlich ist?

Besten Dank,
amigage

Geändert von amigage (16. Dez 2011 um 10:41 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz