studio - ejecutar openssl desde c#
¿Cómo llamar a un archivo VBScript en una aplicación C#? (5)
Necesito llamar a un archivo VBScript (extensión de archivo .vbs) en mi aplicación C # Windows. ¿Cómo puedo hacer esto?
Hay un complemento para acceder a un archivo VBScript en Visual Studio. Pero necesito acceder al script en el código de atrás. ¿Como hacer esto?
¿Quiere decir que intenta ejecutar un archivo vbs desde C #?
Se puede hacer como ejecutar cualquier otro programa desde el código C # :
Process.Start(path);
Pero debe asegurarse de que no solicitará nada, y se está ejecutando con la versión de línea de comando del intérprete:
Process.Start("cscript path//to//script.vbs");
El siguiente código ejecutará una secuencia de comandos de VBScript sin indicaciones ni errores y sin un logotipo de shell.
System.Diagnostics.Process.Start(@"cscript //B //Nologo c:/scripts/vbscript.vbs");
Una técnica más compleja sería usar:
Process scriptProc = new Process();
scriptProc.StartInfo.FileName = @"cscript";
scriptProc.StartInfo.WorkingDirectory = @"c:/scripts/"; //<---very important
scriptProc.StartInfo.Arguments ="//B //Nologo vbscript.vbs";
scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; //prevent console window from popping up
scriptProc.Start();
scriptProc.WaitForExit(); // <-- Optional if you want program running until your script exit
scriptProc.Close();
El uso de las propiedades de StartInfo
brindará acceso bastante detallado a la configuración del proceso.
Debe usar Windows Script Host si desea que el programa de script muestre ventanas, etc. También podrías intentar simplemente ejecutar cscript
directamente, pero en algunos sistemas simplemente lanzará el editor :)
Este es un problema de permisos. Su aplicación appPool debe ejecutarse en el nivel de permiso más alto para hacer esto en 2008. La identidad debe ser Administrador.
Otro enfoque es crear un proyecto de biblioteca de clase VB.NET, copiar el código de VBScript en un archivo de clase VB.NET y hacer referencia a la biblioteca de clases VB.NET desde su programa C #.
Necesitará reparar cualquier diferencia entre VBScript y VB.NET (deberían ser pocas).
La ventaja aquí es que ejecutará el código en proceso.
Para el beneficio de los buscadores, encontré esta post , que da una respuesta clara (especialmente si tienes parámetros). Lo he probado, parece funcionar bien.
string scriptName = "myScript.vbs"; // full path to script
int abc = 2;
string name = "Serrgggio";
ProcessStartInfo ps = new ProcessStartInfo();
ps.FileName = "cscript.exe";
ps.Arguments = string.Format("/"{0}/" /"{1}/" /"{2}/"", scriptName, abc, name);
//This will equate to running via the command line:
// > cscript.exe "myScript.vbs" "2" "Serrgggio"
Process.Start(ps);