如何在C#中嵌入VBS并运行它?

如何在C#中嵌入VBS并运行它?

问题描述:

我有一个工作正常的VBScript。我有一个可以用cscript程序运行VBScript的C#程序。如何在C#中嵌入VBS并运行它?

我想要做的就是将VBS嵌入到C#exe中,这样它就是一个单独的文件,并且能够运行VBS文件。有没有办法让我将嵌入式VBScript文件传递给cscript作为参数或其他方式来运行嵌入式VBS文件?

+0

相关:http://*.com/questions/2409134/running-a-vbs-sub-from-c-sharp?rq=1 – 2012-07-26 11:19:38

Type scriptType = Type.GetTypeFromCLSID(Guid.Parse("0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC")); 

dynamic obj = Activator.CreateInstance(scriptType, false); 
obj.Language = "vbscript"; 
string vbscript = "msgbox(\"test\")"; 
obj.Eval(vbscript); 
+0

这是一个WinForms应用程序的工作示例:http:// cheeso .members.winisp.net/srcview.aspx?dir = script&file = ScriptHost.zip – Cheeso 2012-07-25 22:50:43

+0

我该如何格式化VBScript的语法才能使其工作? msgbox示例工作正常,但在尝试使用VBScript保留字运行我的脚本时出现语法错误。 – Jack 2012-07-26 00:10:48

+0

@Jack你可以发布一个不起作用的*小例子吗? – 2012-07-26 05:59:23

另一种方法是,你可以通过一个子进程中执行CSCRIPT.EXE:

Process.Start("cscript.exe", "C:\\myscript.vbs"); 

但是,记住,.NET和C#是VBS脚本非常兼容。您可能想直接将VBS代码重写为C#程序。

+1

如果没有路径,这将如何与嵌入式资源一起工作?我正在使用'Assembly.GetExecutingAssembly() .GetManifestResourceStream(“script.vbs”))' – Jack 2012-07-26 00:00:11

+0

将资源提取到Temp文件,使用Temp文件执行CScript。然后删除Temp文件? – 2012-07-26 01:42:31

+1

@PaulFarry很明显,我可以做到这一点,但我试图找到一种不公开该文件的方式。 – Jack 2012-07-26 02:01:01