RustDesk sdk 基于 RustDesk 提供rustdesk远程控制的 C ABI,支持在所有编程语言使用,用于在其他语言中嵌入 RustDesk 的功能。
提示:当前 API 处于测试阶段,可能不稳定;严禁将本 SDK 用于任何非法用途。
RustDesk 上游仓库:
https://github.com/rustdesk/rustdesk
感谢 Distromate 分发助手 提供支持
- 动态库交付:构建
cdylib,对外提供 C ABI,便于多语言集成。 - 服务控制:初始化、启动/停止服务、查询运行状态。
- 身份与鉴权:获取设备 ID,读取/更新临时密码,设置永久密码。
- 配置管理:按键读写配置项,获取全部配置的 JSON。
- 连通性检测:rendezvous 服务器信息、NAT 类型检测、连通性测试。
- 开发示例:提供 Python/Tk 示例,便于快速验证集成流程。
使用 ctypes 的最小示例:
import ctypes
import os
dll = ctypes.CDLL(os.path.abspath("target/release/rustdesk_sdk.dll"))
dll.rd_start_server_safe.restype = ctypes.c_bool
dll.rd_get_id.restype = ctypes.c_void_p
dll.rd_free_c_string.argtypes = [ctypes.c_void_p]
if dll.rd_start_server_safe():
ptr = dll.rd_get_id()
device_id = ctypes.c_char_p(ptr).value.decode("utf-8")
dll.rd_free_c_string(ptr)
print("ID:", device_id)完整示例:
examples/rustdesk_sdk_tkinter.py
cargo build -p rustdesk_sdk --release产物:
- Windows:
target/release/rustdesk_sdk.dll - macOS:
target/release/librustdesk_sdk.dylib - Linux:
target/release/rustdesk_sdk.so
bool rd_global_init()- 初始化 RustDesk 全局状态。
bool rd_start_server_safe()- 安全启动(与示例一致):
global_init()-> 如果不是is_cm->start_server(false, false)- 启动前清除
stop-service选项。
- 安全启动(与示例一致):
bool rd_stop_server()- 设置
stop-service = "Y"并重启 mediator 以停止服务。
- 设置
bool rd_is_server_running()- SDK 侧运行标记。
char* rd_get_id()- 返回设备 ID。
char* rd_get_temporary_password()- 返回临时密码。
bool rd_update_temporary_password()- 重新生成临时密码。
char* rd_get_permanent_password()- 返回永久密码(可能为空)。
bool rd_set_permanent_password(const char* password)- 设置永久密码。
char* rd_get_option(const char* key)- 按 key 获取单个配置项。
bool rd_set_option(const char* key, const char* value)- 按 key 设置配置项。
char* rd_get_all_options()- 返回所有配置项的 JSON。
常用网络配置项 key:
custom-rendezvous-server(ID 服务器)relay-server(中继服务器)api-serverkey
char* rd_get_rendezvous_server(uint64_t ms_timeout)- 返回 JSON:
{ "server": "...", "servers": [...], "is_public": true/false }
- 返回 JSON:
int32_t rd_get_nat_type(uint64_t ms_timeout)- 返回 NAT 类型值,失败返回 -1。
bool rd_test_rendezvous_server()- 触发 rendezvous server 测试。
void rd_free_c_string(char* s)- 释放 SDK 返回的字符串。
