Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String lässt sich nicht lesen aus Registry (https://www.delphipraxis.net/90504-string-laesst-sich-nicht-lesen-aus-registry.html)

delphin06 18. Apr 2007 16:44


String lässt sich nicht lesen aus Registry
 
Ich werd bald wahnsinnig...jez versuch ich schon seit stunden den namen einer Zeichenfolge in einem bestimmten Pfad der Registry asuzulesen, aber er findet den einfach nicht, und ich weiß nicht wieso. Er is auf jeden fall da!


code is klar...
Delphi-Quellcode:
procedure TForm1.readdrivenames;
var Reg:TRegistry;
begin
  Reg:=TRegistry.Create;
      try
        Reg.RootKey:=HKEY_LOCAL_MACHINE;       Reg.OpenKey('\SYSTEM\CurrentControlSet\Enum\IDE\DiskST9120821AS_____________________________3.06____\5&302caf91&0&0.0.0', false)
          hddrive[0]:=Reg.ReadString('FriendlyName');
        Reg.CloseKey;
      finally
        Reg.free;
      end;
end;
ich kapier nich warum der das nicht macht..gibt es auf bestimmte verzeichnisse zugriffseinschränkungen? weil wenn ich nen anderen pfad eingebe, dann liest der was

weiß jemand rat?

mkinzler 18. Apr 2007 16:47

Re: String lässt sich nicht lesen aus Registry
 
Was funktioniert nicht, das Öffnen des Schlüssels oder das Lesen des Wertes?

fLaSh11 18. Apr 2007 16:49

Re: String lässt sich nicht lesen aus Registry
 
Hast du den Schlusselnamen richtig geschrieben :mrgreen:

delphin06 18. Apr 2007 17:12

Re: String lässt sich nicht lesen aus Registry
 
das lesen des wertes! der string bleibt immer leer

Zeichenfolge:
Name: FriendlyName
Wert: ST9120821AS ATA Device

[EDIT] hab grad mal versucht den wert zu ändern in der registry aber da is n schreibschutz drauf. bei dem anderen pfad wo das ging is kein schreibschutz. liegt das daran?


[EDIT2] Also es gibt einen unterschied zwischen den beiden verzeichnissen, und zwar hat die Benutzergruppe "Benutzer" in dem einen verzeichnis, wo ich nix lesen kann keine rechte. wie kann ich das jez umgehen?

delphin06 18. Apr 2007 18:41

Re: String lässt sich nicht lesen aus Registry
 
Falls es noch jemanden interessiert, da der Zugriff nicht möglich war habe ich den Schlüssel einfach in mein Programmverzeichnis exportiert:

Delphi-Quellcode:
procedure Tform1.exportkey;
var applicationroot:String;
begin
  applicationroot:=ExtractFilePath(Application.Exename);
  ShellExecute(Form1.Handle
             ,'open'
             ,'regedit.exe'
             ,Pchar('/e '+applicationroot+'device.REG "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\IDE\DiskST9120821AS_____________________________3.06____\5&302caf91&0&0.0.0"')
             ,''
             ,SW_SHOWNORMAL);
end;
jetzt brauch ich einfach nur den string durchsuchen

Christian Seehase 18. Apr 2007 18:47

Re: String lässt sich nicht lesen aus Registry
 
Moin Delphin,

es ist fast immer ratsam die Rückgabewerte von Funktionen zu prüfen. ;-)
In diesem Falle den von Reg.OpenKey.
Wenn Du es nicht explizit anders angibst, wird versucht den Key mit KEY_ALL_ACCESS zu öffnen.
Du kannst das Problem auf zwei Arten umgehen:
  • Die Eigenschaft Access auf KEY_READ setzen
  • Die Methode OpenKeyReadOnly verwenden

Ausserdem fehlt der Resourcenschutzblock (try/finally) für den geöffneten Key.

delphin06 19. Apr 2007 13:47

Re: String lässt sich nicht lesen aus Registry
 
werd ich mir auf jeden fall merken, danke! Allerdings klappt es auch nicht, wenn ich
Delphi-Quellcode:
reg.Access:=KEY_READ;
setzte.

Aber ist ist jetzt auch egal, da ich das schon mit der anderen Möglichkeit fertig hab und das klappt super.

Luckie 19. Apr 2007 14:12

Re: String lässt sich nicht lesen aus Registry
 
Dann lass dein Programm mal ohne Schreibrechte im eigenen Programmverzeichnis laufen. ;)

Christian Seehase 19. Apr 2007 16:01

Re: String lässt sich nicht lesen aus Registry
 
Moin Delphin,

wenn das mit KEY_READ nicht geht, hast Du noch irgendein anderes Problem, denn auf den Key, den Du lesen willst hat jeder Leserechte.
Ich habe mal Deinen Code einmal so ausprobiert, wie er da steht (Copy&Paste, Subkey angepasst, statt Zuweisung an Variable ShowMessage) => Leerstring.
Dann habe ich hinter das Reg.RootKey noch ein Reg.Access := KEY_READ; geschrieben, und bekam den Wert angezeigt.

Bernhard Geyer 19. Apr 2007 16:06

Re: String lässt sich nicht lesen aus Registry
 
Hast Du Vista als OS mit aktiven UAC?
Evtl. ist ja hier die Virtualiserung nicht so 100% ok.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Seite 1 von 2  1 2      

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