Principales respuestas
Ejecutar un fichero .bat desde una aplicacion asp.net vb

Pregunta
-
Hola a todos, estoy intentando ejecutar un fichero .bat que contiene una sola linea, el correspondiente fichero.exe mas sus argumentos. La aplicacion corre bajo Windows 2008 Server y si accedo por escritorio remoto no tengo problema en ejecutar correctamente el fichero .bat.
El problema viene cuando lo intento hacer desde dentro de una aplicacion de prueba que he hecho al efecto. He usado process.start pero no hay forma que lo haga, he mirado por Internet y he probado muchas formas de hacerlo pero el proceso se termina sin mas, no hace nada.
Creo que puede ser un tema de permisos, que al ejecutar el .bat pues no lo haga por falta de permisos. Espero que alguien me pueda ayudar, si necesitais alguna informacion adicional no dudeis en decirmelo.
Muchas gracias.
Balta
lunes, 13 de febrero de 2012 19:01
Respuestas
-
hola
recuerda que una aplciacion web corre impersonando un usuario diferentes, puede que este no tengs permisos de ejecucion para el proceso que quieres realizar
deberias validar que usuario defines en el application pool imagen
valida que tenga un usuario que si pueda ejecutar esta aplicacion
tambien podrias impersonando
Cómo implementar la representación en una aplicación ASP.NET
Understanding Impersonation in ASP.NET
defines en el web.config el tag identity donde pones un usuario y password que pueda eejcutar la aplicacion
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 15 de febrero de 2012 11:41
- Marcado como respuesta baltasarb miércoles, 15 de febrero de 2012 11:42
martes, 14 de febrero de 2012 1:04
Todas las respuestas
-
Hola,
Pero el archivo bat que estas tratando de correr en donde se encuentra. En el server o en el cliente? Desde el cliente no vas a poder.
Puedes darle una mirada a la informacion del siguiente enlace y ver si te funciona la tecnica expuesta acá
Saludos,
Jason Ulloa
Mi Blog San José, Costa Rica- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 15 de febrero de 2012 11:41
lunes, 13 de febrero de 2012 19:44 -
Gracias Jason por su respuesta.
El fichero .bat esta en el servidor, lo que hace ese fichero es generar un fichero .mp3 desde un .txt a traves de una aplicacion que lee el texto del .txt
He seguido el ejemplo que me ha dicho y sigue sin hacer nada pero he podido capturar lo que aparece por consola, aqui se lo dejo por si se le ocurre como solucionarlo:
Microsoft Windows [Versi¢n 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos. c:\windows\system32\inetsrv>E:\TACommand\TACommand /fromfile=F:\voces\prueba.txt /tofile=F:\voces\prueba.mp3 /voice="ScanSoft Monica22 (Spanish)" Access violation at address 004642F9 in module 'TACommand.exe'. Read of address FFFFFFFE c:\windows\system32\inetsrv># F:\voces\prueba.bat run successfully. Exiting c:\windows\system32\inetsrv>EXIT
Gracias de nuevo
Balta
lunes, 13 de febrero de 2012 20:24 -
Al inicio comentaste que se lo hacias con escritorio remoto funcionaba, la pregunta es si cuando lo haces de esa manera lo ejecutas como administrador o en forma simple.
Saludos,
Jason Ulloa
Mi Blog San José, Costa Ricalunes, 13 de febrero de 2012 21:48 -
Si, cuando accedo al servidor por escritorio remoto lo hago como administrador, y funciona perfectamente.
Me imagino que la solucion puede ser ejecutar el bat como administrador desde la aplicacion asp.net pero no se como hacerlo. Este es el codigo que he usado:
' Get the full file path Dim strFilePath As String = "F:\voces\prueba.bat" ' Create the ProcessInfo object Dim psi As System.Diagnostics.ProcessStartInfo = New System.Diagnostics.ProcessStartInfo("cmd.exe") psi.UseShellExecute = False psi.RedirectStandardOutput = True psi.RedirectStandardInput = True psi.RedirectStandardError = True 'psi.WorkingDirectory = "F:\voces\" ' Start the process Dim proc As System.Diagnostics.Process = System.Diagnostics.Process.Start(psi) ' Open the batch file for reading Dim strm As System.IO.StreamReader = System.IO.File.OpenText(strFilePath) ' Attach the output for reading Dim sOut As System.IO.StreamReader = proc.StandardOutput ' Attach the in for writing Dim sIn As System.IO.StreamWriter = proc.StandardInput ' Write each line of the batch file to standard input While (strm.Peek() <> -1) sIn.WriteLine(strm.ReadLine()) End While strm.Close() ' Exit CMD.EXE Dim stEchoFmt As String = "# {0} run successfully. Exiting" sIn.WriteLine(String.Format(stEchoFmt, strFilePath)) sIn.WriteLine("EXIT") 'Close the process proc.Close() ' Read the sOut to a string. Dim results As String = sOut.ReadToEnd().Trim() ' Close the io Streams; sIn.Close() sOut.Close()
Balta
- Editado baltasarb lunes, 13 de febrero de 2012 21:53
lunes, 13 de febrero de 2012 21:51 -
hola
recuerda que una aplciacion web corre impersonando un usuario diferentes, puede que este no tengs permisos de ejecucion para el proceso que quieres realizar
deberias validar que usuario defines en el application pool imagen
valida que tenga un usuario que si pueda ejecutar esta aplicacion
tambien podrias impersonando
Cómo implementar la representación en una aplicación ASP.NET
Understanding Impersonation in ASP.NET
defines en el web.config el tag identity donde pones un usuario y password que pueda eejcutar la aplicacion
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Propuesto como respuesta Eduardo PorteschellerModerator miércoles, 15 de febrero de 2012 11:41
- Marcado como respuesta baltasarb miércoles, 15 de febrero de 2012 11:42
martes, 14 de febrero de 2012 1:04 -
Gracias a su post he conseguido ejecutar sin problemas un fichero .bat, por ejemplo con la compresion por winrar de una carpeta. Pero resulta que el ejecutable en concreto que necesito para mi trabajo sigue sin funcionar... lo hace bajo escriotorio remoto pero desde la aplicacion asp.net no lo hace...
Balta
martes, 14 de febrero de 2012 10:09