Go 如何创建交互式命令执行
我的问题是与exec.command的交互。我想在windows上自动运行RunAs 我希望通过此应用程序在我的客户计算机上启动其他应用程序(如Ccleaner、antivirus eset online等)。因此,我创建了一个adminsys帐户,并希望使用该帐户自动启动这些不同的应用程序Go 如何创建交互式命令执行,go,Go,我的问题是与exec.command的交互。我想在windows上自动运行RunAs 我希望通过此应用程序在我的客户计算机上启动其他应用程序(如Ccleaner、antivirus eset online等)。因此,我创建了一个adminsys帐户,并希望使用该帐户自动启动这些不同的应用程序 cmd := exec.Command("runas", user, nameProgram) cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr stdin,
cmd := exec.Command("runas", user, nameProgram)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
stdin, err := cmd.StdinPipe()
if err != nil {
fmt.Println(err)
}
defer stdin.Close()
err = cmd.Start()
if err != nil {
fmt.Println(err)
return
}
time.Sleep(3 * time.Second)
io.WriteString(stdin, password)
err = cmd.Wait()
if err != nil {
fmt.Println(err)
return
}
这不行
运行方式的错误
Erreur de RUNAS : Impossible d’exécuter - C:\program.exe
1326 : Le nom d’utilisateur ou le mot de passe est incorrect.
他好像不认识密码。当我直接在命令提示符下执行此操作时,它会起作用
我没有运行windows,您问题中的代码对我有用。因此,以下内容可能无法解决您的问题,但这是将字符串传递给命令的替代方法 我创建了名为
pass
的基本命令,以断言密码的正确性:
func main() {
fmt.Print("Enter your password please: ")
reader := bufio.NewReader(os.Stdin)
password, err := reader.ReadString('\n')
if err != nil {
fmt.Println("An error occurred while reading line")
}
// Remove the line break
password = password[:len(password)-1]
if password == "Secret pass" {
fmt.Println("Success !")
} else {
fmt.Println("Failure !")
}
}
现在,不要使用管道,而是将命令的Stdin
设置为新读取器:
func main() {
cmd := exec.Command("pass")
cmd.Stdin = strings.NewReader("Secret pass!\n")
cmd.Stdout = os.Stdout
_ = cmd.Run()
// Failure
cmd = exec.Command("pass")
cmd.Stdin = strings.NewReader("Secret pass\n")
cmd.Stdout = os.Stdout
_ = cmd.Run()
// Success
}
希望这有帮助。您能试试:
exec.Command(“cmd”,“runas”)
(确保您的程序具有管理权限,可以使用runas
命令,而不使用“cmd”
,但要求输入密码。我希望我可以通过go输入密码,而不是在命令提示符下输入-@TicoCheck回答:海报似乎找到了一种方法!抱歉,我最好解释一下自己。我希望通过此应用程序启动其他应用程序(如Ccleaner、antivirus eset online等)所以我创建了一个adminsys帐户,我想用这个帐户自动启动这些不同的应用程序@Tico@samuelmichaux也许编辑你的问题并添加你的评论会更好。没有变化。这是一样的-(