Hallo!
Ich benutze in meinem Programm u.a. die TRegistry Methode OpenKey('Mein Key',false)
Das funktioniert auch alles einwandfrei, auch auf anderen Rechnern mit Win 98. Wenn der key existiert liefert die Funktion true zurück andernfalls false. Wenn der Schlüssel da ist, lese ich die einzelnen Werte ein.
Habe jetzt aber mein Programm auf einem Win 95 Rechner installiert und mit erschrecken festgestellt, dass die Abfrage If not OpenKey('Mein Key',false) immer false ist, selbst dann, wenn der Schlüssel existiert.
Habe deshalb ein kl. registry-test-prog geschrieben und festgestellt, dass die TRegistry-funktionen
KeyExists
OpenKey('',false)
OpenKeyReadOnly
unter Win95 immer fehlschlagen, auch wenn der Schlüssel da ist. Nur OpenKey('',true) scheint zu funktionieren.
Ist das normal? Kann das sein? Ich meine, wozu gibts unter Win 95 ne Registry, wenn man auf diese nicht einwandfrei zugreifen kann??
Gibts andere Möglichkeiten auf die Registry zuzugreifen?? Gibt es evtl. einen Grund, warum die Funktionen dort nich funktionieren, den man leicht beheben kann???
Bin da echt am verzweifeln. Das arbeiten mit der Registry muss doch irgendwie möglich sein.
Noch zur besseren Erklärung:
Mein Install Programm benutzt CreateKey... danach ist der Schlüssel da, unter Win 98 sowie unter Win 95.
Wenn man dann das eigentliche Prog startet, wird in form.create meine function load_registry aufgerufen:
Code:
function load_registry:boolean;
var reg:TRegistry;
begin
reg:=TRegistry.Create;
reg.RootKey:=HKEY_LOCAL_MACHINE;
if not reg.OpenKey('SOFTWARE\MyCompany\MYProduct\',false)then begin
reg.Free;
result:=false;
end else begin
result:=true;
{hier werden die werte geladen.}
reg.Free
end;
end;
Hier der Aufruf aus Form.create:
Code:
{...}
if not load_registry then begin
MessageBox(WindowHandle,'Fehler beim lesen der Registry-Schlüssel.'+#13+
'Stellen Sie sicher dass das Programm ordnungsgemäß installiert wurde.',
'Fehler!',MB_ICONEXCLAMATION or MB_OK);
{...}
Das hat aber als Ergebnis:
Win 95: MessageBox wird angezeigt, auch wenn Schlüssel da ist ----> load_registry=false;
Win 98: alles läuft einwandrei.
genauso schlägt unter Win 95 (wie oben schon geschrieben)
openKeyReadOnly
KeyExists
immer
fehl, auch wenn der Schlüssel 100%ig da ist.
Ich verstehs nicht...
Wie gesagt, läuft auf mehreren Win 98 Rechnern einwandfrei...
...nur das dumme ist, grade auf dem Win 95 Rechner MUSS es laufen.
Woran kann es liegen? Wer weiß Rat?
MfG,
Flox03!