Files

64 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 实现),加解密为确定性
变换,注意密文落盘位置的访问控制。