Pergunta

Eu preciso chamar um (extensão de arquivo .vbs) VBScript arquivo no meu aplicativo do Windows C # . Como posso fazer isso?

Não é um add-in para acessar um arquivo VBScript no Visual Studio. Mas eu preciso acessar o script atrás código. Como fazer isso?

Foi útil?

Solução

O código a seguir irá executar um script VBScript sem avisos ou erros e nenhum logotipo shell.

System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");

Uma técnica mais complexa seria 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();

Usando as propriedades StartInfo lhe dará acesso bastante granular para as configurações de processo.

Você precisa usar o Windows Script Host se quiser que as janelas, etc. a ser exibido pelo o programa de script. Você também pode tentar apenas executar cscript diretamente, mas em alguns sistemas que só vai lançar o editor:)

Outras dicas

Outra abordagem é criar um projeto Class Library VB.NET, copiar o código VBScript em um arquivo VB.NET Class, e fazer referência a biblioteca de classe VB.NET de seu programa C #.

Você vai precisar de correção de quaisquer diferenças entre VBScript e VB.NET (devem ser poucos).

A vantagem aqui é que você vai executar o código dentro do processo.

Este é um problema de permissões. Sua aplicação apppool deve estar em execução no nível de permissão maior para fazer isso em 2008. A identidade deve ser administrador.

Quer dizer que você tentar executar um arquivo VBS de C #?

Pode ser feito como executar qualquer outro programa de C # código :

Process.Start(path);

Mas você tem que ter certeza que ele não vai pedir nada, e ele está sendo executado com a versão de linha de comando do intérprete:

Process.Start("cscript path\\to\\script.vbs");

Para o benefício de pesquisadores, achei que esta pós , o que dá uma resposta clara (esp se você tem parâmetros). Testei -. Parece funcionar bem

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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top