Editor PHP Zimo hari ini akan berkongsi dengan anda kaedah untuk memulakan proses powershell dengan keistimewaan pentadbir dan mengubah hala stdin. Dalam sesetengah kes, kita perlu menjalankan skrip powershell dengan keistimewaan pentadbir, tetapi menjalankannya secara langsung mungkin menghadapi masalah kebenaran. Pada masa ini, kita boleh menggunakan fungsi os.exec untuk mencapai ini. Fungsi os.exec memulakan proses dan mengubah hala input ke dalam skrip. Dengan cara ini kita boleh melaksanakan arahan dengan hak pentadbir dalam skrip dan boleh menerima input. Dalam artikel ini, kami akan memperkenalkan secara terperinci cara menggunakan kaedah ini untuk menyelesaikan masalah kebenaran, kami berharap ia akan membantu semua orang.
Saya ingin memulakan proses powershell dengan hak pentadbir dan mengalihkan stdin kepada penulis, semuanya berfungsi kecuali cara menjalankannya sebagai pentadbir.
// 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()
Memandangkan nampaknya tiada apa-apa seperti process.verb
yang boleh ditetapkan kepada "runas", saya cuba mencipta powershell menggunakan perintah powershell start-process ... -verb runas
Proses dan mendapatkan pid proses berjaya, tetapi nampaknya saya tidak boleh menggunakan pid kemudian untuk mengendalikan stdin dan stdout. process.verb
这样的东西可以设置为“runas”,所以我尝试使用 powershell 命令 start-process ... -verb runas
创建一个 powershell 进程并获取了该进程的 pid成功了,但似乎无法稍后使用 pid 来操作 stdin 和 stdout。
感谢@jeroen-mostert,我有点明白了。我以管理员身份启动了 go 可执行文件,并使用了 StartProcess powershell.exe -verb RunAs
StartProcess powershell.exe -verb RunAs
dan ia tidak berfungsi seperti yang saya mahu pada mulanya, tetapi sekurang-kurangnya ia tidak berfungsi untuk powershell lagi Hidupkan UAC. 🎜Atas ialah kandungan terperinci Bagaimana untuk memulakan proses powershell dengan hak pentadbir dan ubah hala stdin (os.exec). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!