Der PHP-Editor Zimo wird Ihnen heute eine Methode vorstellen, mit der Sie den Powershell-Prozess mit Administratorrechten starten und stdin umleiten können. In einigen Fällen müssen wir das Powershell-Skript mit Administratorrechten ausführen, aber bei der direkten Ausführung kann es zu Berechtigungsproblemen kommen. Zu diesem Zeitpunkt können wir die Funktion os.exec verwenden, um dies zu erreichen. Die Funktion os.exec startet einen Prozess und leitet Eingaben in ein Skript um. Auf diese Weise können wir mit Administratorrechten im Skript Befehle ausführen und Eingaben entgegennehmen. In diesem Artikel stellen wir detailliert vor, wie Sie diese Methode zur Lösung von Berechtigungsproblemen verwenden können. Wir hoffen, dass sie für alle hilfreich ist.
Ich möchte einen Powershell-Prozess mit Administratorrechten starten und stdin zum Writer umleiten. Bei mir funktioniert alles, außer wie man es als Administrator ausführt.
// 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()
Da es scheinbar nichts wie process.verb
gibt, das auf „runas“ gesetzt werden kann, habe ich versucht, eine Powershell mit dem Powershell-Befehl start-process ... -verb zu erstellen runas
Der Prozess und das Abrufen der PID des Prozesses waren erfolgreich, aber es scheint, dass ich die PID später nicht verwenden kann, um stdin und stdout zu bedienen. 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
verwendet und es hat nicht so funktioniert, wie ich es ursprünglich wollte, aber zumindest funktioniert es nicht mehr für Powershell. Einschalten UAC. 🎜Das obige ist der detaillierte Inhalt vonSo starten Sie einen Powershell-Prozess mit Administratorrechten und leiten stdin (os.exec) um. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!