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中文網其他相關文章!