Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TRegIniFile vs. TRegistry unter Vista... (https://www.delphipraxis.net/106419-treginifile-vs-tregistry-unter-vista.html)

ralfiii 10. Jan 2008 14:43


TRegIniFile vs. TRegistry unter Vista...
 
Ich muss was unter HKLM schreiben.
Mach ich das mit
Delphi-Quellcode:
     with TRegistry.Create do
     try
        RootKey:=HKEY_LOCAL_MACHINE;
        Access:=KEY_READ or KEY_WRITE;
        WriteString(ediSection.Text, ediValueName.Text, ediWriteContent.Text);
     finally
            Free;
     end;
lauft's problemlos.
Nehm ich statt TRegistry TRegIniFile kracht's.
Exception "Erzeugung von Schlüssel \Software\Darwin\ misslungen"
ReadString anstelle von WriteString geht. Und unter WinXP läuft's auch.
Starte ich die Anwendung explizit mit Admin-rechten geht's doch.

Hilfe?!?

(Das ganze unter D2006 in einer App mit asInvoker-Manifest)

RavenIV 10. Jan 2008 14:49

Re: TRegIniFile vs. TRegistry unter Vista...
 
Bist Du sicher, dass der Key mit TRegistry auch angelegt wird?
Eigentlich wird die Registry erst geschrieben mit TRegistry.Close

Unter Vista hat nur noch ein Admin die Rechte, in HKLM zu schreiben.
Lesen darf (glaube ich) jeder aus HKLM.

ralfiii 10. Jan 2008 15:09

Re: TRegIniFile vs. TRegistry unter Vista...
 
Zitat:

Zitat von RavenIV
Bist Du sicher, dass der Key mit TRegistry auch angelegt wird?
Eigentlich wird die Registry erst geschrieben mit TRegistry.Close

Unter Vista hat nur noch ein Admin die Rechte, in HKLM zu schreiben.
Lesen darf (glaube ich) jeder aus HKLM.

Ja, hab ich gecheckt.
Unglaublich aber der Fehler liegt in den Borland-Sourcen.

In TRegIniFile.WriteString wird CreateKey aufgerufen und dort steht
Delphi-Quellcode:
  Result := RegCreateKeyEx(GetBaseKey(Relative), PChar(S), 0, nil,
    REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, nil, TempKey, @Disposition) = ERROR_SUCCESS;
und Kay_All_Access hat diese Sache mit Create_Link dabei, und die geht meistns nicht.
Schwachsinn, nicht mal bei Delphi2007 haben sie das ausgebessert, obwohl die Version Vista-Kompatibel sein sollte.

RavenIV 10. Jan 2008 15:49

Re: TRegIniFile vs. TRegistry unter Vista...
 
Dann verwende doch einfach TRegistry und sei glücklich ;-)
Dort geht es ja.

Nur so am Rande: das CloseKey solltest Du trotzdem noch dazuschreiben.

wicht 10. Jan 2008 16:49

Re: TRegIniFile vs. TRegistry unter Vista...
 
Zitat:

Unter Vista hat nur noch ein Admin die Rechte, in HKLM zu schreiben.
Lesen darf (glaube ich) jeder aus HKLM.
Unter keinem NT darf ein Benutzer da rein schreiben (ausser, man gibt ihm die Rechte dazu). Nur der Vollständigkeit halber...

ralfiii 10. Jan 2008 17:53

Re: TRegIniFile vs. TRegistry unter Vista...
 
Zitat:

Zitat von wicht
Unter keinem NT darf ein Benutzer da rein schreiben (ausser, man gibt ihm die Rechte dazu). Nur der Vollständigkeit halber...

Regulär nicht, aber ich hab bei der Installation bei dem Verzeichnis Rechte auf authusers-modify gesetzt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 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