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