为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中执行 vbscript

在 Go 中执行 vbscript

Go
慕斯王 2021-07-07 14:02:54
我正在尝试让 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()这导致输出等于[ ]有人知道为什么会这样吗?任何方向将不胜感激。
查看完整描述

3 回答

?
翻阅古今

TA贡献1780条经验 获得超5个赞

尝试使用Cscript.exe代替cmd.exe.

Cscript.exe 是 Windows 脚本宿主的命令行版本,它提供用于设置脚本属性的命令行选项。

要获取输出,请使用Output()代替Run()

完整示例:

package main


import (

    "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)

    }

}


查看完整回答
反对 回复 2021-07-12
?
手掌心

TA贡献1942条经验 获得超3个赞

另一种方法是让 Windows为您的文件运行默认应用程序.vbs。通常,这将是wscript.exe.


查看完整回答
反对 回复 2021-07-12
  • 3 回答
  • 0 关注
  • 434 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信