![]() |
Delphi-Version: 6
rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Hallo zusammen,
Ich nutze den Beispielcode aus folgendem Thread um die rufId.dll der Klicktel/Rufident CD anzusprehen. Das ganze ermöglicht eine Rückwärtsuche in der Klicktel Datenbank. ![]() Das ganze funktioniert in einer normalen Anwendung einwandfrei, wenn ich allerdings den Code in einen Dienst stecke startet dieser erst gar nicht. Fehlermeldung: "Runtime error 217 at 000112A7" und anschließend "Fehler 1053: Der Dienst antwortete nicht rechtzeitig auf die Start- oder Steuerungsanforderung." Es reicht schon folgendes in den initialization Abschnitt der Unit zu stecken:
Delphi-Quellcode:
DllHdl ist nach Aufruf von LoadLibrary0, GetLastError ist auch 0 (getestet mit Messageboxen). Gehe ich den Code in Einzelschritten durch hat DllHdl einen Wert > 0 und GetLastError liefert wieder 0. Ich verstehe nicht wieso LoadLibrary mir kein Handle für die DLL gibt obwohl GetLastError behauptet das alles ok war.
initialization
DllHdl := 0; FuncPtr := Nil; DLLPath:= DllPath + 'rufid.dll'; DllHdl := LoadLibrary(PChar (DLLPath)); if DllHdl > 0 then begin FuncPtr := GetProcAddress( DllHdl, 'SucheTelefonnummer' ); if FuncPtr <> nil then @PSucheTelefonnummer := FuncPtr; FuncPtr := GetProcAddress( DllHdl, 'UseVersion' ); if FuncPtr <> nil then @PUseVersion := FuncPtr; end; Was mache ich falsch? Vielen Dank schon mal AliDi |
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
-Was steht den in DllPath?
-Hat der Dienst-Owner Zugriff auf diesen? |
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Hi,
Zitat:
Delphi-Quellcode:
DllHdl := LoadLibrary('F:\Projekte\Delphi\RService\rufid.dll');
Der Dienst und die DLL liegen in einem Verzeichnis. Zugriffsrechte sollten auch passen, der Dienst läuft unter dem Lokalen Systemkonto. Dieser hat Vollzugriff auf das Verzeichnis. Gruß Alidi |
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Starte den Dienst unter einem Benutzerkonto wo der Zugriff als Anwendung funktioniert.
(z.B. als Administrator) Ich vermute mal die DLL braucht irgendein Geraffel, was diese nur in dem Userprofil findet und der Systemuser hat halt keins. |
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Handelt es sich um ein lokales Laufwerk?
|
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Hi,
Ja, ist ein lokales Laufwerk. Wenn ich den Dienst als Admnistrator starte ist es der gleiche Effekt. In einer normalen Anwendung funktioniert es als Administrator. Kann man eine DLL eigentlich so bauen, das sie nicht mit einem Dienst funktioniert? Gruß AliDi |
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Warum muss es denn überhaupt ein Dienst sein?
|
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Hi,
Zitat:
Gruß Alidi |
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Mit Dienst und Netzwerk wirst du noch mehr Probleme bekommen, da das Systemkonto in der Regel keinen Zugriff auf das Netzwerk hat.
|
AW: rufId.dll aus Windows Dienst ansprechen (LoadLibrary)
Hi,
Zitat:
Gruß Alidi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 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