# remote 远程控制服务管理(被控端能力):RDP / VNC(TightVNC) / Radmin 的服务状态查询、 启停与重置,VNC 服务端安装/配置读写,VNC 密码加解密,远程信息汇总。 > 自 go-hua/remote 平移并入(包名保持 `remote`),与本库 file/shell/process > 同属被控端远程运维能力。 ## 用法 ```go 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` 实现),加解密为确定性 变换,注意密文落盘位置的访问控制。