![]() |
Registry: Open Key liefert False, warum?
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:
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 |
AW: Registry: Open Key liefert False, warum?
Rechteproblem?
TRegistry.Create(KEY_READ); |
AW: Registry: Open Key liefert False, warum?
Hallo Bummi,
super! Das hat funktioniert. Warum hat mein Code an manchen Stationen funktioniert und an anderen nicht? Ein lokaler Admin muss doch immer gleich auf die Registry zugreifen können, oder? |
AW: Registry: Open Key liefert False, warum?
UAC Vista (+) ?
|
AW: Registry: Open Key liefert False, warum?
Zitat:
Zitat:
Und welche Reschte besitzt das Programm? Zitat:
|
AW: Registry: Open Key liefert False, warum?
Das Programm liegt wie gesagt im Netzwerk. Auf mehreren Maschinen wird es über einen Link aufgerufen. Auf manchen Maschinen funktioniert der Aufruf von OpenKey mit dem default access Typ. Bei anderen nicht.
|
AW: Registry: Open Key liefert False, warum?
wie sieht es bei "als Administrator ausführen" aus?
|
AW: Registry: Open Key liefert False, warum?
Nur weil der Benutzer als Administrator arbeitet, sind nicht automatisch alle Programme mit Admin-rechten ausgestattet (dank UAC)
und in diesem Zweig hat nunmal zurecht nicht jeder einfach so Schreibrechte. |
AW: Registry: Open Key liefert False, warum?
Zitat:
Zitat:
Zitat:
|
AW: Registry: Open Key liefert False, warum?
Hallo mrSpock, :-)
ich frage mal anders rum. Was ist denn letztendlich dein Ziel? Was willst Du auslesen? Gibt es da keine anderen Wege? Wir sind (zufälligerweise) ein Programmierer-Team gerade für Produkte von Sage (in- und externe Entwicklung). Ich bin speziell für die Classic Line bzw. heute Sage New Classic zuständig. Wir arbeiten regelmäßig per ODBC Schnittstelle, nun gut heutzutage auch direkt per MySQL, und haben zu gut wie nie Probleme. Ist zwar ein wenig "mistig" der ODBC-Treiber, aber es geht schon. Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz