C# 在C中使用命令提示符参数执行VBS脚本#

C# 在C中使用命令提示符参数执行VBS脚本#,c#,vbscript,process,C#,Vbscript,Process,我有一个.vbs脚本文件,需要从C#应用程序执行。我们通常通过右键单击vbs文件并选择“使用命令提示符打开”来执行它,这样用户就可以输入参数,脚本就会启动 使用下面的代码,我可以执行vbs文件,但它仍会提示输入: var MyProcess = new Process(); MyProcess.StartInfo.FileName = @"MyVBSScript.vbs"; MyProcess.StartInfo.WorkingDirectory = @"C:\Folder\WhereVBS\F

我有一个.vbs脚本文件,需要从C#应用程序执行。我们通常通过右键单击vbs文件并选择“使用命令提示符打开”来执行它,这样用户就可以输入参数,脚本就会启动

使用下面的代码,我可以执行vbs文件,但它仍会提示输入:

var MyProcess = new Process();
MyProcess.StartInfo.FileName = @"MyVBSScript.vbs";
MyProcess.StartInfo.WorkingDirectory = @"C:\Folder\WhereVBS\FileLives";
MyProcess.StartInfo.Arguments = @"UserArgumentWithoutSpaces";
MyProcess.Start();
MyProcess.WaitForExit();
MyProcess.Close();

我的目标是通过传递参数来绕过提示。在VBS文件中是否需要执行某些操作,或者我的C代码中是否需要更改?

我不确定您要传递的参数是什么,但请看下面的HelloWorld示例。我在脚本中使用的参数是
/admin
/user
Case…Else
,以确保脚本在没有参数的情况下无法运行。如果您希望进程稍微隐藏,命令行将是
cscript.exe“C:\Scripts\Hello\u with_Args.vbs”/admin
,如果您希望用户看到它,命令行将是
wscript.exe“C:\Scripts\Hello\u with_Args.vbs”/admin
。并使用
MyProcess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden或类似的内容来隐藏命令提示窗口。希望这有帮助

'Hello_with_Args.vbs
Dim args
Set args = WScript.Arguments
If args.Count > 0 Then
    For i = 0 To args.Count - 1
        Select Case LCase(args.Item(i))
            Case "/admin"
                WScript.Echo "Hello World!!" & vbCrLf & "You passed the /admin arg."
            Case "/user"
                WScript.Echo "Hello World!!" & vbCrLf & "You passed the /user arg."
            Case Else
                WScript.Echo "You can only use the ""/admin"" or ""/user"" command line arg or do not specify an arg."
        End Select
    Next
Else
    Wscript.Echo "Hello World!!" & vbCrLf & "No command line args passed."
End If

谢谢我能够使用其中的一部分来修复我的vbs脚本,并使用命令提示符进行测试。