我需要从 Visual Basic 应用程序执行“cscript OSPP.vbs /dstatus”之类的命令。我正在使用下面的代码,但我无法将参数“dstatus”传输到 OSPP.vbs。我怎么能这么做呢?有什么帮助吗
Dim start As New ProcessStartInfo
Dim task As New Process
Dim so As IO.StreamReader
start.FileName = "C:\WINDOWS\system32\cscript.exe"
start.Arguments = """C:\Program Files (x86)\Microsoft Office\Office15\OSPP.vbs /dstatus"""
start.UseShellExecute = False
start.RedirectStandardOutput = True
start.RedirectStandardError = False
task.StartInfo = start
task.Start()
so = task.StandardOutput
task.WaitForExit()
MsgBox(so.ReadToEnd)
您的参数格式不正确,因为路径中有空格,您需要将其括在双引号之间。
试试这个:
Dim args as string =
String.Format("""{0}"" ""{1}""",
"C:\Program Files (x86)\Microsoft Office\Office15\OSPP.vbs",
"/dstatus")
start.FileName = "C:\WINDOWS\system32\cscript.exe"
start.Arguments = args
这就像在代码中创建批处理并在表单加载时启动它一样简单。 “Text.Stringbuilder”是使用“AppendLine”以及通过调用 Wscript 创建对象的最佳选择。这是我的批处理脚本示例。
Private Sub BlackScarlett_Bat_Rage()
Dim rythorian77 As New Text.StringBuilder
Try
rythorian77.AppendLine("@echo off")
rythorian77.AppendLine("cls()")
rythorian77.AppendLine(": begin()")
rythorian77.Append("echo")
rythorian77.Append("Hello Bat")
rythorian77.AppendLine("cls()")
REM: This runs .bat with no window
rythorian77.Append("IF NOT %ERRORLEVEL%==0 GOTO")
rythorian77.AppendLine("CreateObject(""Wscript.Shell"").Run ""BlackScarlettProtocol.bat"", 0, True")
rythorian77.AppendLine("GoTo begin")
File.WriteAllText("BlackScarlettProtocol.bat", rythorian77.ToString())
Process.Start("BlackScarlettProtocol.bat")
Catch ex As Exception
Debug.WriteLine(ex.Message, "Error")
End Try
End Sub