登录
首页 >  Golang >  Go问答

如何使用管理员权限启动 powershell 进程并重定向 stdin (os.exec)

来源:stackoverflow

时间:2024-04-20 22:36:25 212浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《如何使用管理员权限启动 powershell 进程并重定向 stdin (os.exec)》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我想以管理员权限启动一个 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”,所以我尝试使用 powershell 命令 start-process ... -verb runas 创建一个 powershell 进程并获取了该进程的 pid成功了,但似乎无法稍后使用 pid 来操作 stdin 和 stdout。


正确答案


感谢@jeroen-mostert,我有点明白了。我以管理员身份启动了 go 可执行文件,并使用了 StartProcess powershell.exe -verb RunAs,它并没有像我一开始想要的那样工作,但至少它不再为 powershell 打开 UAC。

以上就是《如何使用管理员权限启动 powershell 进程并重定向 stdin (os.exec)》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>