getenv () nicht mit Windows 2008 Server

Gast #2737702
Lesenswert?

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 ?
Gast #2737725
Lesenswert?

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.
Gast #2738499
Lesenswert?

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.
Gast #2763257
Lesenswert?

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 ?
Gast #2763286
Lesenswert?

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.
Gast #2769304
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren