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.
Du könntest mal mit der Win32-API-Funktion GetEnvironmentStrings alle Environmentvariablen in einem Rutsch abfragen und irgendwohin ausgeben; vielleicht hat MS die von Dir gewünschten ja auch einfach nur umbenannt. http://msdn.microsoft.com/en-us/library/windows/desktop/ms683187%28v=vs.85%29.aspx
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.