AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Probleme mit TRegistry Methoden unter Win 95!
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TRegistry Methoden unter Win 95!

Ein Thema von Flox03 · begonnen am 5. Mai 2003 · letzter Beitrag vom 6. Mai 2003
Antwort Antwort
Flox03

Registriert seit: 5. Mai 2003
2 Beiträge
 
Delphi 6 Personal
 
#1

Probleme mit TRegistry Methoden unter Win 95!

  Alt 5. Mai 2003, 15:05
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!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 5. Mai 2003, 15:10
Grund kann ich dir auch nicht sagen. Aber probier doch mal den Zugriff über die direkten API aufrufe von den Registry-Funktionen. Tutorial dazu gibt es hier: http://www.luckie-online.de/delphi/win32apidl.shtml . Allerdings nur in der Download-Version, nicht online.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Flox03

Registriert seit: 5. Mai 2003
2 Beiträge
 
Delphi 6 Personal
 
#3
  Alt 5. Mai 2003, 19:38
jo, danke für den link... hat mir sehr geholfen.

Das registry test-prog, welches ich extra geschrieben hab, testet jetzt auch mit den WinAPI Funktionen.
Kann das leider nur noch nicht auf Win 95 testen... Hab ich nicht selber...

Wer das kleine Test-Proggy (mit QuellText) haben möchte, kann sich das gerne ziehen, habs als Attachment drangehängt..

Wäre gut, wenn jemand mit Win 95 hier wäre und das test-proggy mal laufen lassen könnte.
Das Prog erstellt nur einen Schlüssel in die registry und man testet dann mit 7 verschiedene Möglichkeiten auf den Schlüssel und/oder den Wert im Schlüssel zuzugreifen.

Was wäre eigentlich, wenn auch die WinAPI Funktionen mehr oder weniger bei Win 95 fehlschlagen?? Dann müsste doch das System eigentlich schrottreif sein?!?!?

Naja, hoffe mal das läuft mit den WinAPI Funktionen auf Win 95, ansonsten bleibt mir die etwas blöde Möglichkeit mit
registry.OpenKey('MyKey',true);
if registry.ValueExists('MyValue') then registry.read...
auf die registry zuzugreifen, denn openkey('',true) und ValueExists scheinen auf dem Win 95 System zu funktionieren (sieht jedendfalls so aus...)

Das Dumme daran ist nur, dass bei dieser Methode immer der Schlüssel erstellt wird,... auch wenn man keinen haben möchte...

MfG,
Flox03!
Angehängte Dateien
Dateityp: zip registry_test_new.zip (197,1 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4
  Alt 6. Mai 2003, 17:16
s. http://www.delphi-forum.de/viewtopic.php?t=10869, dann spare ich mir ein doppeltes Schreiben
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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