Entwickler-Ecke

Windows API - Exception beim Schreiben in Registry


Kanne - Mo 06.09.04 21:34
Titel: Exception beim Schreiben in Registry
bekomme mit Delphi keine Werte in die Registry !

Als Test sollte zu jedem Extension-Eintrag mit
"PersistentHandler" der dort hinterlegte Wert in
einem neuen Schlüssel "default" gesichert werden.

Den Schlüssel selber kann ich noch anlegen,
aber beim Schreiben des Wertes gibt's immer
eine ERegistryException "failed to set data for ..." !?
(sollte ja normalerweise auch ohne die beiden OpenKey
und CloseKey gehen ... habe aber in meiner Not schon alles probiert).

Im Netz gab's diverse Hinweise auf fehlende Rechte (aber keine Lösung - ausserdem habe ich Admin-Rechte) !


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
begin
listbox1.Items.Clear;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKeyReadOnly('\');
Reg.GetKeyNames(listbox1.Items);
for I := 0 to ListBox1.Items.Count - 1 do
if Reg.KeyExists('\' + ListBox1.Items[I] + '\PersistentHandler'then
begin
Reg.OpenKey('\' + ListBox1.Items[I] + '\PersistentHandler', false);
Wert := Reg.ReadString('');
ListBox1.Items[I] := ListBox1.Items[I] + Wert;
Reg.CreateKey('default');
Reg.OpenKey('default',false);
Reg.WriteString('default',Wert);
Reg.CloseKey;
end;
Reg.Free;
end;

P.S.:
Tests liefen bisher unter XP Prof. !

Moderiert von user profile iconUGrohne: Delphi-Tags hinzugefügt.


matze - Di 07.09.04 11:49

du hast warscheinlich in dem teil der reg keine schreibberechtigung !


Delete - Di 07.09.04 16:24

Als Admin hat man dort welche.


Kanne - Mi 08.09.04 00:08

hm ... dafür muss es aber doch eine Lösung geben.
Ich kann ja auch den RegEdit aufrufen und die Änderungen manuell machen - nur will ich das eben per Programm ! :cry:


Michael Stenzel - Mi 08.09.04 01:17

Hallo Kanne!

In deinem Source steht

Delphi-Quelltext
1:
Reg.OpenKeyReadOnly('\');                    


Versuche doch mal nur

Delphi-Quelltext
1:
Reg.OpenKey('\');                    


Ich vermute mal, daß im Reg-Object das Flag für ReadOnly nicht durch den nochmaligen Aufruf von OpenKey gelöscht wird.

gruß
Michael.


Kanne - Do 09.09.04 00:19

:D unglaublich ... aber wahr !
Jetzt geht's ... der Sinn bleibt fraglich :?:

thx a lot & mercy cheri