原理说明:
- 利用cmdkey /generic 生成对应的 用户和密码的秘钥。
- 调用 命令 mstsc /v: ,打开远程,会自动关联账号。
- 利用cmdkey /delete 删除秘钥。
- 如果远程地址有端口,注意 生成秘钥时候的地址不要带端口。
代码分享
func doMstsc(address string, user string, pwd string) error {
var addressIp = getIp(address)
if out, err := RunCmd(fmt.Sprintf("cmdkey /generic:%s /user:\"%s\" /pass:\"%s\"", addressIp, user, pwd)); err != nil {
fmt.Println("错误 " + err.Error())
return err
} else {
if !strings.Contains(out, "成功添加凭据") {
fmt.Println("错误 " + err.Error())
return errors.New(out)
}
}
defer func() { _, _ = RunCmd(fmt.Sprintf("cmdkey /delete:%s", addressIp)) }()
//mstsc /v:address
if _, err := RunCmd(fmt.Sprintf("mstsc /v:%s", address)); err != nil {
return err
}
return nil
}
func getIp(address string) string {
var ipIndex = strings.Index(address, ":")
addressIp := address
if ipIndex > 0 {
addressIp = address[:ipIndex]
}
ret