Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: Asp e Dll

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    8

    Asp e Dll

    Salve a tutti...
    Espongo il problema al quale non riesco a dare soluzione :

    ho bisogno di eseguire un file .exe scritto in C++ da una pagina ASP; per evitare i problemi di sicurezza ho scritto in VB una Dll che contiene unicamente il seguente metodo :

    Public Sub avvia_schedulazione()
    Dim nomefile, parametro As String
    Dim RetCod As Long
    nomefile = "C:\Inetpub\wwwroot\sito\nome_file.exe"
    parametri = "C:\Inetpub\wwwroot\sito\parametro.txt"
    RetCod = ShellExecute(Handle, "Open", nomefile, parametri, vbNullString, SW_SHOWNORMAL)
    end sub

    Se inserisco la dll in un progetto VB di prova e ne richiamo il metodo con un pulsante,l'eseguibile viene correttamente eseguito (ne ho conferma dal fatto che crea il file di testo di output).

    Allora registro la mia dll nella cartella sito (ho verificato che i permessi di IIS 5 per l'esecuzione siano assegnati alla cartella) e in una pagina ASP scrivo il seguente codice :

    dim obj
    set obj = server.CreateObject("nome_dll.nome_classe")
    obj.metodo_della_dll

    Il metodo della classe viene visto nella pagina ASP (Visual Studio lo suggerisce quando metto il punto dopo la variabile obj),non ho errori di compilazione,la pagina viene caricata (ho fatto scrivere una riga html giusto per non avere la pagina vuota) ma il file non viene eseguito (il file di testo di output non viene creato e scritto) ... compare solo il testo html ma è come se non accadesse nulla.

    Adesso sono bloccato e non riesco ad andare avanti ... chi può aiutarmi a capire dove sto sbagliando ?

    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Ma cosa devi fare?
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  3. #3
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    IL PROBLEMA è l'esecuzione di comandi.

    L'utente anonimo di IIS non ha di default la possibilità di lanciare eseguibili, devi dargliela tu.

    Quando utilizzi la dll a mano, lo fai con il tuo utente, quindi cambia tutto....
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    8
    Immaginavo fosse un problema di permessi...
    Mi diresti gentilmente i passi da seguire per abilitare l'utente user di IIs all'esecuzione di file ?

    Grazie

  5. #5
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    nelle proprietà della cartella sia da IIS che col tasto destro, puoi dare i permessi di esecuzione, ma su files dentro la cartella, cioè l'eseguibile deve stare lì dentro.
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  6. #6
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    8

    ancora niente...

    niente ... ho assegnato il controllo completo della cartella e dei file in essa contenuti all'utente Internet Guest, ho fatto la stessa cosa anche con i file cmd.exe, cscript.exe e wscript.exe contenuti in C:\Windows\System32 ma non riesco ugualmente ad eseguire il file...

    Aiutooooo.........

  7. #7
    in teoria non ti servirebbe nemmeno la libreria in vb. Dovresti riuscire a lanciare la shell direttamente da asp.
    Salva questa classe in una pagina asp (per esempio shell.asp)
    codice:
    <%
    Class cShell
    	Public WScript
    	Public Output
    	Public Error
    	Private Sub Class_Initialize()
    		Set WScript = Server.CreateObject("WScript.Shell")
    	End Sub
    
    	Public Function Execute(commandLine)
    	Dim oExec
    		on error resume next
    			Set oExec = WScript.Exec(commandLine)
    			If Err.number <> 0 then
    				Response.Write("<p style='font-family:verdana;font-size:11px'>Shell Error
    "& Err.Description & "
    CommandLine : " & commandLine)
    				Response.End
    			end if
    		on error goto 0
    		Error = False
    		Output = oExec.StdOut.ReadAll()
    		if Output="" then
    			Output = oExec.StdErr.ReadAll()
    			Error = True
    		End If
    		Execute = Error
    	End Function
    	
    	Private Sub Class_Terminate()
    		Set WScript = nothing
    	End Sub
    
    End Class
    %>
    poi crea una nuova pagina asp e copia questo codice:
    codice:
    <%
    Set Shell = new cShell
    Response.Write("<BODY style='font-size:11px;font-family:verdana'>")
    Response.Write("Execute:"& Shell.Execute("cmd /?") & "
    ")
    Response.Write("Error:"&Shell.Error & "
    ")
    Response.Write("Output:"& replace(Server.HtmlEncode(Shell.Output), vbcrlf, "
    " & vbcrlf) & "
    ")
    Response.Write("</dir>")
    %>
    dovresti ottenere una pagina con l'help dei comandi.
    Se funziona puoi sostituire "Shell.Execute("cmd /?")", con il tuo programma.
    EX Mentecatto - succube della Honda
    Le mie foto|HONDA CLUB ITALIA!|DARTH LEGNANZ!

  8. #8
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da lufo5
    dovresti ottenere una pagina con l'help dei comandi.
    Se funziona puoi sostituire "Shell.Execute("cmd /?")", con il tuo programma.
    Ciao Lufo5, ecco cosa restituisce il tuo script:
    codice:
    Shell Error
    Object doesn't support this property or method
    CommandLine : cmd /?

  9. #9
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    8
    a me invece lo script restituisce all'interno della pagina ASP tutte le istruzioni per l'uso del comando "cmd" ... quindi direi che lo script funziona ...

    Per me il problema è che se sostituisco Shell.Execute("cmd /?") con il mio Shell.Execute(Server.MapPath("senza_parametri.exe" )) mi restituisce :

    Execute:Vero
    Error:Vero
    Output:File prova.log could not be opened

    (prova.log è il file che l'eseguibile C++ che sto usando come test deve scrivere ... e che scrive solo se lo eseguo dal prompt dei comandi)

    A cosa può essere dovuto l'errore ?

  10. #10
    se scrive che non può venire aperto, potrebbe essere che la cartella in cui è situato non è raggiungibile dall'user di iis.
    EX Mentecatto - succube della Honda
    Le mie foto|HONDA CLUB ITALIA!|DARTH LEGNANZ!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.