猿问

在 Go 中执行 vbscript

我正在尝试让 Go 程序执行一个添加多个注册表值的 vbscript。处理这个的 Go 代码如下:


err = exec.Command("cmd.exe", "/c", "registry.vbs").Run()

if err != nil {

    fmt.Printf("Error: %s\n", err.Error())

}

当我运行我的 Go 程序并且它到达执行此 vbscript 的部分时,绝对没有任何反应。注册表值不会更改,并且没有错误。如果我尝试运行以下命令,它就可以正常工作:


cmd.exe /c C:\path\to\file\registry.vbs

我尝试过的事情:


在 Go 程序中添加文件路径

以管理员身份运行 Go 程序

我尝试使用.Output()而不是,.Run()这导致输出等于[ ]

有人知道为什么会这样吗?


任何方向将不胜感激。


慕斯王
浏览 435回答 3
3回答

翻阅古今

尝试使用Cscript.exe代替cmd.exe.Cscript.exe 是 Windows 脚本宿主的命令行版本,它提供用于设置脚本属性的命令行选项。要获取输出,请使用Output()代替Run()。完整示例:package mainimport (    "fmt"    "os/exec")func main() {    if out, err := exec.Command("Cscript.exe", "registry.vbs").Output(); err != nil {        fmt.Printf("Error: %s\n", err)    } else {        fmt.Printf("%s\n", out)    }}

手掌心

另一种方法是让 Windows为您的文件运行默认应用程序.vbs。通常,这将是wscript.exe.
随时随地看视频慕课网APP

相关分类

Go
我要回答