0

我有一个需要从 C# 应用程序执行的 .vbs 脚本文件。我们通常会通过右键单击它并选择“使用命令提示符打开”来执行 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# 代码中是否需要更改?

4

1 回答 1

1

我不确定您要传递的参数是什么,但请查看下面的 HelloWorld 示例。我在这个脚本中的 args 是/adminor/user和 aCase...Else以确保脚本不能在没有 args 的情况下运行。cscript.exe "C:\Scripts\Hello_with_Args.vbs" /admin 如果您希望进程在某种程度上隐藏并且wscript.exe "C:\Scripts\Hello_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
于 2013-05-31T16:36:48.857 回答