Files
remote-core/remote/README.md
T
4566704 9c2a57b576 feat(remote): 自 go-hua/remote 并入远程控制服务管理
- RDP/VNC(TightVNC)/Radmin 服务状态查询与启停重置、VNC 安装/配置读写/密码
  加解密、GetRemoteInfo 汇总、CAD/SAS 注册表开关
- 与本库 file/shell/process 同属被控端远程运维能力; 新增依赖
  kardianos/service、KarpelesLab/vncpasswd
- 附 remote_test.go 与包 README(含平台支持矩阵与权限注意)
2026-09-20 12:39:30 +08:00

61 lines
2.5 KiB
Markdown
Raw 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()
_, msg, err := remote.InstallVncServer() // 安装服务(需管理员权限)
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 开关需要管理员权限,失败信息见返回 msg 或 error。
- VNC 密码格式与 TightVNC 兼容(`KarpelesLab/vncpasswd` 实现),加解密为确定性
变换,注意密文落盘位置的访问控制。