![]() |
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:
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
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; weiß jemand rat? |
Re: String lässt sich nicht lesen aus Registry
Was funktioniert nicht, das Öffnen des Schlüssels oder das Lesen des Wertes?
|
Re: String lässt sich nicht lesen aus Registry
Hast du den Schlusselnamen richtig geschrieben :mrgreen:
|
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? |
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:
jetzt brauch ich einfach nur den string durchsuchen
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; |
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:
Ausserdem fehlt der Resourcenschutzblock (try/finally) für den geöffneten Key. |
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:
setzte.
reg.Access:=KEY_READ;
Aber ist ist jetzt auch egal, da ich das schon mit der anderen Möglichkeit fertig hab und das klappt super. |
Re: String lässt sich nicht lesen aus Registry
Dann lass dein Programm mal ohne Schreibrechte im eigenen Programmverzeichnis laufen. ;)
|
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. |
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 00:08 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