我正在尝试让 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 脚本宿主的命令行版本,它提供用于设置脚本属性的命令行选项。
完整示例:
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)
}
}
- 3 回答
- 0 关注
- 434 浏览
添加回答
举报
0/150
提交
取消