2009-05-22 3 views
4

Ich muss den Befehlszeilenbetrieb von einigen älteren ASP-Anwendungen ausführen.Wie Debug ASP-Berechtigungsprobleme mit WScript.Shell-Objekt?

Hier ist mein Code:

<% 
    cmd = "%comspec% /c echo Hello"  

    set wsh = CreateObject("WScript.Shell") 
    ireturn = wsh.Run(cmd, 0, true) 
    set wsh = nothing 
%> 

Und hier ist das Ergebnis Ich erhalte:

Microsoft VBScript-Laufzeitfehler '800a0046'

Permission

/Test verweigert .asp, Zeile 6

Haben Sie eine Idee, wie IIS6 diesen Code ausführen soll?

Hinweis: Natürlich muss ich nicht echo Befehl ausführen, aber ich möchte alle weiteren Ursachen des Problems ausschließen.

Update: Ich habe versucht die meisten Dinge Tomalaks erwähnen, aber nichts half. Vielleicht kann ich die Frage etwas ändern. Wie kann ich dieses Problem beheben?

Antwort

4

ASP ist normalerweise Zugriff auf potenziell gefährliche, wie cmd.exe verweigert. Überprüfen Sie die Dateiberechtigungen in cmd.exe, um zu sehen, ob das für Sie zutrifft (vermutlich).

Wenn Sie wirklich müssen cmd.exe verwenden, um einen Teil der Seitenverarbeitung zu tun, ändern Sie entweder Dateiberechtigungen auf cmd.exe (nicht für einen Internet-gerichteten Webserver empfohlen), oder stellen Sie sicher, dass die ASP-Seite Führt Anmeldeinformationen aus, denen der Zugriff auf diese Datei nicht verweigert wird.

Um dies zu erreichen, verwenden Sie die IIS Management Console, um "anonymen Zugriff" auf die ASP-Seite zu entfernen und stattdessen Windows-integrierte Authentifizierung zu verwenden, oder lassen Sie "anonymer Zugriff" eingeschaltet und geben Sie einen festen Satz von Anmeldeinformationen ein sollte anstelle des Standards "IUSR _..." verwendet werden.

Wenn Sie stattdessen cmd.exe nur zum Starten eines Programms verwenden, das etwas an STDOUT ausgibt, können Sie versuchen, das Programm direkt zu starten, ohne es in einen cmd.exe-Aufruf einzufügen. Auch hier führt der Benutzer die ASP-Seite unter benötigtem Zugriff auf die Programmdatei aus.