• User Newbie

    wscript.shell lato server

    Ho visto, riportato in qualche articolo, la possibilità di eseguire da ASP classico comandi bat o file exe sul server utilizzando wscript
    per esempio:
    set oW = server.createObject("wscript.shell")
    oW.Run ("eseguibile")

    Purtroppo non succede nulla e cercando su google ho notato che molti che tentano di usare wscript.shell lato server hanno lo stesso problema.
    In pratica apparentemente non succede niente però guardando nel task manager nella sezione processi ogni volta che si avvia lo script
    viene aggiunto il processo. Leggendo quà e la mi sembra di capire che il problema sia nell'autorizzare l'interazione con il desktop (utente interattivo?), ma nessuno propone una completa procedura per risolvere il problema.
    Gradirei se possibile informazioni in merito.
    Grazie


  • Moderatore

  • User Newbie

    Scusa, di tutto il testo, la parte che interessa mi sembra essere:

    If you want to run executables on IIS from a script (i.e. an ASP, ASP.Net, or PHP page is considered a script resource executed by ASP.DLL, ASPNET_ISAPI.DLL, or PHP-CGI.EXE / PHPISAPI.DLL Script Engine, respectively), then you need to configure "Scripts" execute permission as well as Web Service Extension for the appropriate Script Engine. i.e.
    MyScript.asp contains the following content which executes FSUTIL.EXE:
    <%set objShell = Server.CreateObject( "WScript.Shell" )objShell.Run( "FSUTIL.EXE" )%>

    • /cgi-bin has "Scripts" execute permission enabled.
    • %systemroot%\System32\inetsrv\ASP.DLL is enabled as a Web Service Extension.
    • /cgi-bin has a ScriptMaps property which associates .asp extension to %systemroot%\System32\inetsrv\ASP.DLL as a Script Engine.
    • You make a request to http://localhost/cgi-bin/MyScript.asp
    • IIS identifies ASP.DLL as the ISAPI Script Engine to process the /cgi-bin/MyScript.asp resource and checks it against Web Service Extension. Since it is allowed, it executes ASP.DLL using the user token obtained through whatever authentication protocol is negotiated between the browser and server.

    Note: even though the ASP page runs FSUTIL.EXE, FSUTIL.EXE does NOT need to be in Web Service Extension because IIS never runs nor knows about FSUTIL.EXE. IIS only knows it is running ASP.DLL so that is what needs to be enabled as a Web Service Extension.

    • ASP.DLL will keep the impersonated identity from IIS and parse/execute the script code in MyScript.asp using Windows Scripting Host. objShell.Run() translates into a CreateProcess() Win32 API call, and FSUTIL.EXE runs using the Process Identity (this is how CreateProcess is documented to work!)
    • FSUTIL output is unknown to ASP (and IIS) unless you capture the output of objShell.Run() somehow and then Response.Write() it so that IIS knows about it.Non ho però capito "operativamente" che operazioni vanno eseguite sui file e sul server:
      Apprezzerei molto un chiarimento.
      Grazie

  • User Newbie

    PS: Non ho capito se vale anche per un server con SP profesisonal e IIS 5.1
    Grazie


  • User Newbie

    scusate, volevo dire
    PS: Non ho capito se vale anche per un server con XP professional e IIS 5.1
    Grazie


  • Moderatore

    Non credo perchè tra IIS 5.e IIS 6 c'è un abisso, in ogni caso prova e facci sapere 😉

    PS: Perchè non passi a IIS 6.0 con il framework .NET ?
    E' compatibile anche con le classiche Active Server Pages!

    :ciauz:


  • User Newbie

    scusa, in conclusione esiste un modo di configurare IIS 5.1 per consentire l'esecuzione di wscript.shell lato server?
    Grazie