AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Registry HK_LM ReadOnly ohne Adminrechte ?
Thema durchsuchen
Ansicht
Themen-Optionen

Registry HK_LM ReadOnly ohne Adminrechte ?

Ein Thema von DataCool · begonnen am 9. Mär 2012 · letzter Beitrag vom 9. Mär 2012
Antwort Antwort
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 09:38
Hallo Leute,

ich versuche gerade unter Win7 64Bit, einen Wert unter :
[SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserLis t] zu Lesen.
Das ich ohne Admin-Rechte dort nicht Schreiben kann ist mir klar, aber Lesen sollte doch wohl gestattet sein ?!

Mein Code:
Delphi-Quellcode:
function HiddenUserAccountExist : Boolean;
const
   cRegKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList';
   cKEY_WOW64_64KEY = $0100; // Notwendig, weil dieses Projekt noch unter D7 "läuft"

var Reg : TRegistry;
begin
  Result := False;
  Reg := TRegistry.Create(KEY_READ or cKEY_WOW64_64KEY);
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    Reg.Access := KEY_READ or cKEY_WOW64_64KEY; // normal zum Test manuell setzen, aber Access-Wert ist davor auch schon derselbe
    if Reg.KeyExists(cRegKey) then begin
      if Reg.OpenKeyReadOnly(cRegKey) then begin
      //if Reg.OpenKey(cRegKey,false) then begin // auch OpenKey Variate nützt nichts, denn KeyExists steigt vorher schon mit false aus
        Result := Reg.ValueExists('SomeUserName');
        Reg.CloseKey;
      end
      else begin
        OutputDebugString(PChar(SysErrorMessage(GetLastError)));
      end;
    end
    else
      OutputDebugString(PChar('"'+cRegKey+'" nicht vorhanden'));
      // Landet jetzt immer hier, obwohl der Key definitiv existiert ...
  finally
    Reg.Free;
  end;
end;
Habe ich irgendeinen Fehler den ich gerade übersehe ?
Oder ist LOCAL_MACHINE wirklich ohne Adminrechte nicht mehr verfügbar ?
Ich möchte doch "nur" überprüfen, ob ein bestimmer versteckter Benutzeraccount existiert ...

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.

Geändert von DataCool ( 9. Mär 2012 um 10:40 Uhr) Grund: zweite Erweiterung des Source
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 09:53
Kann es sein daß noch ein Reg.KeyExists fehlt?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 10:08
@Brummi:
Eigentlich war ich der Meinung das KeyExist nicht notwendig ist,
denn wenn der Key nicht existiert, darf das ganze ruhig fehlschlagen.
Zur Sicherheit habe ich es jetzt aber doch eingebaut, s. modifizierten Code oben.
Jetzt sagt er mir doch tatsächlich das der Key nicht existiert, obwohl dieser definitiv existiert,
habe hier mal eben den Registry-Schlüssel exportiert:
Code:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList]
"SomeUser"=dword:00000000
Werde ich langsam alt, bin ich blind oder was ist hier los ?

Danke & Gruß

Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 10:15
Ich vermute Du willst einen 64-Bit Schlüssel mit einer 32-Bitanwendung lesen.
Schau mal ob Du damit was anfangen kannst
http://www.delphipraxis.net/155861-w...direction.html


[Edit]
Sorry für meine Dummheit ... Du benötigst wahrscheinlich
 Reg := TRegistry.Create(KEY_READ or KEY_WOW64_64KEY); [/Edit]
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 9. Mär 2012 um 10:24 Uhr)
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
675 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 10:22
Die ganze Redirection ist aber etwas übertrieben für diesen Fall. Hier reicht es für den Zugriff auf den 64-bit-Teil eigentlich, das Property Access anzupassen (Stichwort KEY_WOW64_64KEY). Wenn ich mich recht erinnere, hatte OpenKeyReadOnly da auch noch Bugs. Eventuell also lieber OpenKey und vorher Access := KEY_READ or KEY_WOW64_64KEY (o.ä.).
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 10:43
habe obrigen Sourcecode nochmals angepasst, leider immer noch erfolglos.
Besonders zu erwähnen ist vielleicht die Entwicklung unter D7 bei diesem Projekt.
Des Weiteren tritt das Problem wahrscheinlich nur auf meiner Entwicklungsmaschine W7 64Bit auf,
produktiv brauche ich definitiv im Moment nur Zugriff auf 32Bit XP-Registry.
Trotzdem würde ich der Ursache gerne auf den Grund gehen.

Ich komme im obrigen Code ja gar nicht zum OpenKey / OpenKeyReadOnly,
der Aufruf Reg.KeyExist schläfgt immer fehl ....

Noch Ideen ?

Danke & Gruß

Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 11:02
Habe jetzt selber die Lösung gefunden,
wenn mann TRegistry nicht benutzt und dann die schon oben genannten Tipps berücksichtigt,
dann klappt's auch mit dem Nachbarn

Delphi-Quellcode:
function HiddenUserAccountExist : Boolean;
const
   cRegKey = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList';
   cKEY_WOW64_64KEY = $0100; // <--- für ältere Delphi Versionen

var aKey : HKEY;
    dwType : DWORD;
    dwLen : DWORD;
    iRes : Integer;
begin
  Result := False;
  iRes := RegOpenKeyEx(HKEY_LOCAL_MACHINE, cRegKey, 0, KEY_READ or cKEY_WOW64_64KEY, aKey);
  if iRes = ERROR_SUCCESS then begin
    try
      Result := RegQueryValueEx(aKey,'SomeUser', nil, @dwType, nil, @dwLen) = ERROR_SUCCESS;
    finally
      RegCloseKey(aKey);
    end;
  end;
end;
Danke nochmal an alle die sich beteilgt haben,

Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.

Geändert von DataCool ( 9. Mär 2012 um 11:13 Uhr)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 11:12
Nur mal so als Nachtrag: auch bei der Registry kann man genau wie bei Dateien Berechtigungen vergeben. Ob man also lesen oder schreiben kann, kann man ermitteln in dem man einfach auf Berechtigungen klickt.

Das sollte zwar kaum passieren, aber man kann auch sich selbst, ohne Adminrechte, Rechte entziehen. Und was ich kann, kann aber auch jedes böse Programm. Sollte zwar kaum passieren, aber wer weiß. Also zuerst gucken, kostet nichts.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Registry HK_LM ReadOnly ohne Adminrechte ?

  Alt 9. Mär 2012, 12:28
Delphi-Quellcode:

  Reg := TRegistry.Create(KEY_READ or cKEY_WOW64_64KEY);
Bei manchen Delphi-Versionen gab es glaube ich ein Bug, welcher eine Maske auf die Parameter angewendet hat. Dadurch ist dann das Wow64* verloren gegangen.

Bei D2007 habe ich keine Probleme gehabt (in Software-UpToDate),
einen Key nur lesend in 64bit zu öffnen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  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 06:09 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