Einzelnen Beitrag anzeigen

Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#1

Registry: Open Key liefert False, warum?

  Alt 1. Okt 2012, 06:16
Hallo,

mit dem nachfolgenden Code greife ich auf die Registry zu und lese den ODBC Eintrag aus für den Zugriff auf die KHK New CL.

Das Programm liegt auf dem Netz und mehrere Mitarbeiter haben Zugriff darauf.

An einer Station wird in die Debug-Datei die Ausgabe:
Zitat:
Key:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\O DBC.INI\Post51 nicht gefunden
geschrieben. D.h. dass die OpenKey Funktion nicht erfolgreich durchgeführt wird.

An dieser Station lässt sich RegEdt32 starten und der Key anzeigen, der genau an der angezeigten Stelle steht.
Der Benutzer hat Administrator Rechte.

Woran kann es liegen, dass OpenKey nicht den gewünschten Key öffnet?

Delphi-Quellcode:
try
      AssignFile(DebugTxt, ExtractFilePath(Application.ExeName)+'\Debug.txt');
      Rewrite(DebugTxt);
      Reg := TRegistry.Create;
      Reg.RootKey := HKEY_LOCAL_MACHINE;
      if Reg.OpenKey('\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\Post51', False) then
      begin
         station := Reg.ReadString('DBQ');
         Writeln(DebugTxt, 'station='+station);
         Ini := TIniFile.Create(station);
         KHKDatenverzeichnis := Ini.ReadString('Directories', 'DatPath', 'C:\');
         Writeln(DebugTxt, 'KHKDatenVerzeichnis:'+KHKDatenVerzeichnis);
         { In der CL 3.5 hat der Eintrag "Database" die Form " MxxxVyy"
          wobei xxx die Mandantennummer ist und yy das Finanzjahr.
           Achtung: Der Eintrag beginnt mit einem blank! }

         station := Reg.ReadString('DATABASE');
         Mandant := StrToInt(Copy(Reg.ReadString('DATABASE'), 3, 3));
         Writeln(DebugTxt, 'Mandant:'+IntToStr(Mandant));
         KHKMandantenVerzeichnis := KHKDatenVerzeichnis+IntToStr(Mandant);
         Writeln(DebugTxt, 'KHKMandantenVerzeichnis:'+KHKMandantenVerzeichnis);

         Ini.Free;
         user := Reg.ReadString('UID');
      end
      else
         Writeln(DebugTxt, 'Key: '+'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ODBC\ODBC.INI\Post51'
                           +' nicht gefunden');
      CloseFile(DebugTxt);
      Reg.CloseKey;
      Reg.Free;
   except
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat