我想以管理员权限启动PowerShell进程,并将标准输入重定向到编写器,除了如何以管理员身份运行它之外,我已经做好了所有工作.

// Start powershell
powershell := exec.Command("powershell")
// Add something that will open UAC and give the process admin priviliges

powershell.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
powershell.Env = os.Environ()

// Create pipe to write to it later
stdin, err := powershell.StdinPipe()
if err != nil {
    log.Fatal(err)
}

defer stdin.Close()

由于似乎没有Process.Verb这样的东西可以设置为"runas",我try 使用PowerShell命令Start-Process ... -Verb runas创建一个PowerShell进程,并成功地获得了该进程的PID,但似乎没有办法在以后使用PID来操作stdin和stdout.

推荐答案

多亏了@Jeroen-Mostert,我有点想通了.我以管理员身份启动了我的GO可执行文件,并使用了StartProcess powershell.exe -verb RunAs,它不像我一开始想要的那样工作,但至少它不再为PowerShell打开UAC.

Go相关问答推荐

调用API时使用nginx作为反向代理时从nginx获取502坏网关

CGO如何转换为文件*类型

正在使用terratest执行terraform脚本测试,但遇到错误退出状态1

Golang文本/模板序列范围

为什么(编码器).EncodeElement忽略";,innerxml";标记?

文件路径.Abs()未在结果中提供子目录

Azure golang SDK - 将 AcrPull 角色分配给 AKS 群集

Json.Unmarshal() 和 gin.BindJson() 之间的区别

3 字节切片和有符号整数类型之间的转换

当我使用 CircleCI 构建 Go Image 时,我得到runtime/cgo: pthread_create failed: Operation not allowed

Secrets Manager Update Secret - Secret String 额外的 JSON 编码

有没有办法在 Golang 中使用带有 go-simple-mail lib 的代理?

hyperledger fabric - go:在 $PATH 中找不到可执行文件

设置指向空接口的指针

拆分文本并按空格获取字符串数组,如果文本长度超过 500,则获取字符串数组

Go:从 ssl 证书中获取 'subject/unstructeredName' 的值

自定义指标未显示在 prometheus web ui 中,grafana 中也是如此

通用函数与外部包中的常见成员一起处理不同的 struct ?

不理解切片和指针

如何在程序退出时使用 golang 删除文件?