Maison >développement back-end >Golang >Comment démarrer un processus PowerShell avec des privilèges d'administrateur et rediriger stdin (os.exec)
L'éditeur PHP Zimo partagera aujourd'hui avec vous une méthode pour démarrer le processus PowerShell avec les privilèges d'administrateur et rediriger stdin. Dans certains cas, nous devons exécuter le script PowerShell avec des droits d'administrateur, mais son exécution directe peut rencontrer des problèmes d'autorisation. À ce stade, nous pouvons utiliser la fonction os.exec pour y parvenir. La fonction os.exec démarre un processus et redirige les entrées vers un script. De cette façon, nous pouvons exécuter des commandes avec des droits d'administrateur dans le script et recevoir des entrées. Dans cet article, nous présenterons en détail comment utiliser cette méthode pour résoudre les problèmes d'autorisation, nous espérons qu'elle sera utile à tout le monde.
Je souhaite démarrer un processus PowerShell avec des droits d'administrateur et rediriger stdin vers l'écrivain, j'ai tout qui fonctionne sauf comment l'exécuter en tant qu'administrateur.
// 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()
Comme il ne semble pas y avoir quelque chose comme process.verb
qui puisse être défini sur "runas", j'ai essayé de créer un PowerShell à l'aide de la commande PowerShell start-process ... -verb runas
Le processus et l'obtention du pid du processus ont réussi, mais il semble que je ne pourrai pas utiliser le pid plus tard pour faire fonctionner stdin et 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
et cela n'a pas fonctionné comme je le voulais en premier lieu, mais au moins cela ne fonctionne plus pour PowerShell. UAC. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!