Files
..

remote

远程控制服务管理(被控端能力):RDP / VNC(TightVNC) / Radmin 的服务状态查询、 启停与重置,VNC 服务端安装/配置读写,VNC 密码加解密,远程信息汇总。

自 go-hua/remote 平移并入(包名保持 remote),与本库 file/shell/process 同属被控端远程运维能力。

用法

import "git.zeroonesoft.cn/golib/remote-core/remote"

// 汇总信息(主机名/IP/MAC/远程端口/VNC 密码等)
info := remote.GetRemoteInfo()

// 远程服务状态与控制
_ = remote.GetRdpServiceStatus()   // kardianos/service Status
_ = remote.GetVncServiceStatus()   // 同上
_ = remote.GetRadminServiceStatus() // (int, error):1 运行 / 0 停止 / -1 未安装
_ = remote.GetServiceStatus("SessionEnv") // 通用按服务名查询
err := remote.ServiceStart(name)   // 启动 / ServiceStop 停止
_ = remote.GetServiceReset(name)   // 重置类服务状态

// RDP / VNC 端口与 VNC 密码读取
port, err := remote.GetRdpPort()
vncPort, err := remote.GetVncPort()
pass, err := remote.GetVncPassword()

// VNC(TightVNC) 服务端管理(Windows)
cfg := remote.VncServerDefaultConfig(true /* 随机密码 */) // VncServerConfig
err = remote.WriteVncServerConfig(cfg)
cfg, err = remote.ReadVncServerConfig()
// 绿色安装最新版 TightVNC:校验 exe → 写注册表全集(随机密码, 需管理员权限) →
// 注册系统服务(装而不启, 远程时再 VncStart; 已运行则重启加载新配置)。
// 返回生成的明文密码供调用方上报/展示。
pass, err := remote.InstallVncServer(`D:\app\tvnc\tvnserver.exe`)
err = remote.VncInit()                   // 初始化/修复配置
err = remote.VncStart()                  // VncStop / VncRestart
err = remote.VncInstall()                // VncUninstall
err = remote.RunVncService()             // 以服务方式运行

// VNC 密码加解密(TightVNC 注册表存储格式)
enc := remote.VncPasswordCrypt("plainpass")     // []byte
plain := remote.VncPasswordDecrypt(enc)          // string

// CAD/SAS 相关注册表开关(Windows)
err = remote.EnableSoftwareSASGeneration()

平台支持

  • remote.go / type.go:跨平台(依赖 kardianos/service)。
  • windows.go / vnc.go://go:build windows(注册表、TightVNC 配置)。
  • unix.go://go:build linux(精简实现)。

注意

  • GetServiceStatus 系列对未安装服务返回 -1 而非错误;GetRdpServiceStatus / GetVncServiceStatus 走 kardianos/service,未安装返回 error。
  • InstallVncServer / VncInit / CAD 开关需要管理员权限,失败信息见返回 error;安装配置对齐最新版 TightVNC(2.8.x) 注册表 37 项全集。
  • VNC 密码格式与 TightVNC 兼容(KarpelesLab/vncpasswd 实现),加解密为确定性 变换,注意密文落盘位置的访问控制。