首頁 > 後端開發 > Golang > 主體

如何使用管理員權限啟動 powershell 進程並重新導向 stdin (os.exec)

王林
發布: 2024-02-10 19:03:19
轉載
423 人瀏覽過

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

php小編子墨今天要跟大家分享一個使用管理員權限啟動powershell進程並重定向stdin的方法。在某些情況下,我們需要以管理員權限執行powershell腳本,但直接執行可能會遇到權限問題。這時,我們可以使用os.exec函數來實作。 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)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!