Comment appeler un fichier VBScript dans une application C#?
j'ai besoin d'appeler un VBScript fichier (.extension de fichier vbs) dans mon application C# Windows. Comment puis-je faire cela?
il y a un add-in pour accéder à un fichier VBScript dans Visual Studio. Mais j'ai besoin d'accéder au script en code derrière. Comment faire cela?
5 réponses
le code suivant exécutera un script VBScript sans invites ni erreurs et sans logo shell.
System.Diagnostics.Process.Start(@"cscript //B //Nologo c:\scripts\vbscript.vbs");
une technique plus complexe serait d'utiliser:
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();
StartInfo
propriétés de vous donner accès granulaire aux paramètres du processus.
Vous devez utiliser Windows Script Host si vous voulez windows, etc. à être affiché par le programme script. Vous pouvez également essayer de l'exécution d' cscript
directement, mais sur certains systèmes il suffit de lancer l'éditeur :)
une autre approche consiste à créer un VB.NET projet de bibliothèque de classe, copiez votre code VBScript dans un VB.NET Class file, and reference the VB.NET bibliothèque de classe de votre programme C#.
vous aurez besoin de corriger toute différence entre VBScript et VB.NET (devrait être peu).
l'avantage ici, c'est que vous exécuterez le code en cours de traitement.
C'est un problème d'autorisations. Votre application appPool doit être en cours d'exécution au plus haut niveau d'autorisation pour le faire en 2008. L'Identité doit être Administrateur.
vous voulez dire que Vous essayez d'exécuter un fichier vbs à partir de C#?
C'est peut-être fait comme lancer tout autre programme à partir du code C#:
Process.Start(path);
mais vous devez vous assurer qu'il ne demandera rien, et il fonctionne avec la version en ligne de commande de l'interpréteur:
Process.Start("cscript path\to\script.vbs");
Pour le bénéfice des chercheurs, j'ai trouvé ce post, qui donne une réponse claire (esp si vous avez des paramètres). Avons testé il semble bien fonctionner.
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);