Hallo,
ich hebe ein C-Programm, das als cgi-Anwendung im Internet Information
Server läuft, bei dem am Anfang die Funktion
"strsuch = getenv("AUTH_USER");"
vorkommt, um den Benutzernamen des Anwenders festzustellen.
Auf einem Windwos 2000 Server funktioniert das einwandfrei, aber auf
einem Windows 2008 Server liefert das Programm keinen Benutzernanmen
zurück.
Gleiches gilt für die Funktion "strsuch = getenv("REMOTE_USER");"
Woran könnte das liegen ?
gehen denn die andere variablen?
Wenn nur die AUTH_USER nicht gehen, dann musst du erstmal für diese
webseite einstellen das nicht nur anonymous drauf darf, sonst macht er
keine anmeldung und die variablen sind leer.
Der anonyme Login ist für die verwendete Standard-Webseite deaktiviert.
Aktiviert ist Standard-Windows Login, und beim Aufruf des Programmes
wird die Benutezrname- Passwort-Kombination auch automatisch abgefragt.
Danach startet das Programm, aber die Environment-Variablen werden nicht
erkannt bzw. vom System zurückgeliefert.
AUTH_USER, REMOTE_USER etc. sind scheinbar Variablen des IIS, aber warum
die im Fall des Windows 2008 Servers nicht zurückgegeben werden, konnte
ich bisher noch nicht herausfinden.
Rufus Τ. Firefly schrieb:> Du könntest mal mit der Win32-API-Funktion GetEnvironmentStrings alle> Environmentvariablen in einem Rutsch abfragen und irgendwohin ausgeben;
Danke, werde ich versuchen.
Der "set"-Befehl gibt die Systemvariablen "AUTH_USER", "REMOTE_USER" und
"REMOTE_HOST" auch bei solchen Servern (Windows 2000 Server, XP) NICHT
zurück, auf denen sie von der Webanwendung mit der getenv()-Funktion
gelesen werden können.
Scheint sicb also um spezielle IIS-Variable zu handeln.
anfaenger schrieb:> Scheint sicb also um spezielle IIS-Variable zu handeln.
Klar, die trägt der IIS in das Environment der von ihm aufgerufenen
Prozesse ein. Außerhalb des IIS/cgi-Kontextes hätten diese Variablen
auch überhaupt keinen Sinn.
Ich habe das gleiche Problem und auch schon eine Vermutung, woran es
liegt:
Mein cgi-Programm (z.B. demo.exe) wird normalerweise auf dem Server
ausgeführt und schreibt dort (auf dem Server) auch korrekt ein Logfile
(in c:\log\...)
Auf einem Rechner mit Windows2000 Server OS klappt das einwandfrei.
Wenn das cgi-Programm (z.B. demo.exe) aber auf dem Rechner mit Windows
2008 Server OS gestartet wird, dann öffnet der aufrufende Internet
Explorer AUF DEM CLIENT ein Fenster, mit dem die Ausführung des
Programmes "demo.exe" erlaubt werden muss und die logdatei wird LOKAL
auf dem Server in "c:\log\..." angelegt (also wird wojl auch das
cgi-Programm "demo.exe" lokal auf dem Client ausgeführt).
Vermutlich weigert sich der Server, dort die cgi-Anwendung "demo.exe"
auszuführen.
Beim Windows2000 Server gibt es im Internet Information Server ja die
Möglichkeit, die Option "Skripte ausführen" zu erlauben, aber das finde
ich beim Internet Information Server des Betriebssystems Windows 2008
Server nicht ?
Hat jemand einen Tipp ?
Hat jemand einen Tipp ?
wenn ich das richtig verstehe, dann liefert der Server die exe als
Download aus. Das darf auf jeden Fall nicht so sein. Eventuell muss man
die endung (*.exe) erst als Ausführbar kennzeichenn. Das müsste aber im
IIS zu finden sein.
Peter II schrieb:> wenn ich das richtig verstehe, dann liefert der Server die exe als> Download aus. Das darf auf jeden Fall nicht so sein. Eventuell muss man> die endung (*.exe) erst als Ausführbar kennzeichenn. Das müsste aber im> IIS zu finden sein.
Ja, so scheint es zu sein, beim IIS des Windows 2008 Server wird die
Datei "demo.exe" im cgi-Verzeichnis offenbar nicht ausgeführt, sondern
als Download für den aufrufenden Internet-Explorer (der die
Standard-Datei des IIS "index.htm", von der wiederum das exe-File
"demo.exe" aufgerufen wird) bereitgestellt und dann lokal auf dem
Clienet ausgeführt.
Wie gesagt kann man im IIS des Windows2000 Server (oder auch von Win XP)
für das cgi-Verzeichnis das Ausführen von Sktripten per Häcken in dem
Menü erlauben, das habe ich beim IIS des Windows 2008 Server so nicht
gefunden.
Anonymos-Logins sind übrigens nicht erlabt, benutzer müssen sich mit der
Standardathenifzierung (Benutzername / Passwort) anmelden.
Ganz kompakt gefragt :
Hat jemand einen Tipp. wie man den Internet Information Server des
Windows2008 Servers dazu bringt, exe-Dateien im cgi-Verzeichnis
auszuführen ? !
Welche Rechte müssen dazu wo im IIS vergeben werden ?
IIS verwende ich nicht.
Beim Apache muß man ihm im Konfigurationsfile sagen, daß
er eine *.exe als CGI ausführen soll. Vermutlich muß man das
auch bei IIS.
Der Vollständigkeit halber für alle, die es auch mal brauchen können.
Damit der Internet Information Server des Windows 2008 Servers (IIS
Version 7.5) *.exe-Dateien im cgi-Verzeichnis ausführt, bin ich so
vorgegangen :
1.) das "cgi"-Verzeichnis im Verzeichnis ".\inetpub\wwwroot\" anlegen.
2.) Im Root-Verzeichnis des IIS unter "ISAPI- und CGI-Einschränkungen"
das Programm (z.B. "demo.exe") eintragen.
3.) Auf der Default Web Site des IIS unter "Handlerzuordnungen"
*.EXE-Dateien unter dem Namen "Cgi-EXE" aufnehmen.