AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Daten lesen und schreiben aus einer ISAPI-Dll

Daten lesen und schreiben aus einer ISAPI-Dll

Ein Thema von charly52 · begonnen am 5. Aug 2022 · letzter Beitrag vom 6. Aug 2022
Antwort Antwort
charly52

Registriert seit: 2. Sep 2018
49 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 5. Aug 2022, 18:14
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:
  Assignfile (msgLogFile, 'MsgFile.Log');
  REWRITE (msgLogFile);
  writeln(msgLogFile, 'Formular TWebModule1 wurde gerade created')
eingebaut. Dann steht der Server scheinbar und ich bekomme im RestDebugger von meinem Entwicklungsrechner aus nur ein Pling.

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
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
913 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 5. Aug 2022, 18:22
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.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.656 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 5. Aug 2022, 18:43
Zitat:
 Assignfile (msgLogFile, 'MsgFile.Log');
Wer mit relativen Pfaden arbeitet, der hat es nicht anders verdient, wenn sein Progamm ihm in den Kopf schießt.



Zitat:
Welcher Nutzer
Wenn es ein Service ist, dann schau doch mal in die Diensteverwaltung ... dort steht das ja.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
507 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 5. Aug 2022, 18:44
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.

Geändert von Rolf Frei ( 5. Aug 2022 um 19:01 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.656 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 5. Aug 2022, 20:51
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
charly52

Registriert seit: 2. Sep 2018
49 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 6. Aug 2022, 08:59
Erst mal Danke an alle
Ich werde mal weiter testen

Charly
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
507 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Daten lesen und schreiben aus einer ISAPI-Dll

  Alt 6. Aug 2022, 13:41
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.
Er redet von IIS Dienst (WWW-Publishingdienst) und nicht von einem eigenen Dienst. Der Dienst läuft als lokales Systemkonto. Dateizugriffe, etc. aus IIS Prozessen (ISAPI,CGI,ASP, etc.) laufen nicht unter diesem Account, sondern wie erwähnt unter dem sehr eingeschrenkten anonymen IIS_IUSRS / IUSR Account, der auserhalb des IIS keine Zugriffsrechte auf irgendwas im Fielesystem hat. Einzig auf dem IIS Webroot mit den IIS-Websites, hat er Lesezugriff. Wenn man irgendwo was mit einer ISPA oder CGI-EXE reinschirebn will, muss man da beim entsprechenden Ordner NTFS Schreib- und ev. Löschrechte für den User IUSR geben.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf