![]() |
Daten lesen und schreiben aus einer ISAPI-Dll
Hi all,
ich habe das Beispiel aus dem video von Danny Wind zum SummerCamp 2021 nachgebaut. Läuft auch problemlos auf einem 2 ten Rechner mit Win10 und aktiviertem IIS. Jetzt meine Frage Kann ich aus der DLL heraus Daten von der Platte lesen / schreiben? Unter was für einem Benutzer läuft der ISS? Ist doch ein Service, oder nicht? Wegen eventueller Rechte. Ich möchte eigentlich nur mit nem writeln(logfile,'ein logeintrag') etwas auf die Platte schreiben. Habe dazu im WebModuleCreate ein
Delphi-Quellcode:
eingebaut. Dann steht der Server scheinbar und ich bekomme im RestDebugger von meinem Entwicklungsrechner aus nur ein Pling.
Assignfile (msgLogFile, 'MsgFile.Log');
REWRITE (msgLogFile); writeln(msgLogFile, 'Formular TWebModule1 wurde gerade created') Bei einem lokalen Aufruf direkt auf dem 2ten Rechner bekomme ich Diese Seite funktioniert im Moment nicht.localhost hat eine ungültige Antwort gesendet. ERR_INVALID_HTTP_RESPONSE Was mach ich falsch? Charly |
AW: Daten lesen und schreiben aus einer ISAPI-Dll
Dienste können mit unterschiedlichen Rechten laufen. Schau doch mal nach, es steht ja da: Es gibt lokale Dienste, Netzwerkdienste und lokales System. Da du keinen Ordner angegeben hast, kann es gut sein, dass das Ding irgendwo in den Programmdateien von sich selbst oder IIS schreiben möchte, wo es durchaus Sinn ergibt, wenn ein lokaler oder Netzwerkdienst das nicht darf. Gib also einen Ordner an, wo der Dienst schreiben darf. Kann man ja auch sehen.
|
AW: Daten lesen und schreiben aus einer ISAPI-Dll
Zitat:
Zitat:
|
AW: Daten lesen und schreiben aus einer ISAPI-Dll
Der Benutzer (Gruppe) heisst IIS_IUSRS. Zumindest für eine Delphi CGI-Exe wird dieser verwendet. Kann sein dass für eine ISAPI-DLL eventuell ein anderer genutzt wird (IIS_WBG / IUSR). Am Dienst darfst und sollst du nichts ändern (!), das läuft da alles wie es sein soll. Du musst nur dem IUser bei deinem Verzeichnis die richtigen Schreibrechte geben (auf NTFS ACL-Ebene) und dann sollte es problemlos gehen. Ich nehme ja mal an, dass du Grundkonfiguration (Handler, AppPool, etc) des IIS bereits angepasst hast, damit du ISAPI/CGI überhaupt nutzen kannst, ansonsten würde du einen anderen Fehler bekommen.
Ich würde dir aber empfehlen besser eine CGI-EXE zu machen, da diese viel einfacher administrierbar ist, da du so einfach die neue Exe ersetzen kannst, ohne den IIS zu Stoppen oder sonst was damit zu machen. Bei einer ISAPI DLL ist das deutlich mühsamer, da du dann den IIS Stoppen oder zumindest die alte Version entladen musst. Da ist nur unnötiger Aufwand und bringt nicht wirklich einen Vorteil, weil auch eine CGI-Exe im Cache des IIS beibt und daher praktisch genauso schnell ist wie eine ISAPI-DLL. Ich habe da mal Tests gemacht und da kaum einen Unterschied festgestellt. Einzig das erste Aufruf nach einem Neuboot, oder längerer Pause, kann etwas länger dauern, aber wie reden hier von ein paar ms. Auf was du noch achten musst, ist dass du keine Routinen aufrufst, die eine MessageBox oder andeer Interaktion verlangen. Damit hängt sich deine Webapplikation auf und du wirst irgendwann einen Fehler bekommen. @charly52 @himitsu @redeemer Nein das hat mit dem Dienst nchts zu tun. Der IIS Dienst läuft als lokaler System Dienst. Die Benutzerverwaltung hat damit überhaupt nichts zu tun. Der IIS ist wesentlich komplexer als nur ein einfacher Dienst. Der User wird im IIS definiert, respektive eben als Default der sehr eingeschränkter anonyme User IIS_IUSR verwendet. Da muss er nichts daran ändern, sonst eröffnet er nur mögliche Sicherheitslöcher. |
AW: Daten lesen und schreiben aus einer ISAPI-Dll
Wenn es ein Dienst ist, dann ist bei ihm angegeben, in welchem Account er von Windows gestartet wird.
Aber ja, wenn dieser Dienst dann wiederrum etwas in einem anderen Account startet, dann kann die DLL auch wo anders laufen. per se ist es eh keine gute Idee einen Webservice mit Systemrechten laufen zu lassen .... falls da mal was schief läuft und jemand sich rein hackt, dann hätte er*innen alle nötigen Rechte für sonstwas Nettes. :duck: |
AW: Daten lesen und schreiben aus einer ISAPI-Dll
Erst mal Danke an alle
Ich werde mal weiter testen Charly |
AW: Daten lesen und schreiben aus einer ISAPI-Dll
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:08 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