本指南详细介绍如何通过Windows系统升级和RDP Wrapper开源工具加上批处理脚本,实现在Windows系统上实现多用户远程桌面会话的完整自动化配置方案,支持多个用户同时连接,无需额外许可证。
LOADING...
本指南详细介绍如何通过Windows系统升级和RDP Wrapper开源工具加上批处理脚本,实现在Windows系统上实现多用户远程桌面会话的完整自动化配置方案,支持多个用户同时连接,无需额外许可证。
文档版本: v3.0
本文作者: 杖雍皓
最后更新: 2026年3月1日
适用对象: 零基础用户 / IT管理员 / 多任务需求用户
难度等级: ⭐⭐☆☆☆
操作所需时间: 约 5 分钟(不包含系统升级重启时间)
这个工具可以让一台电脑同时运行类似多台电脑,每个窗口都有自己独立的桌面,互不干扰。
工作原理图解
在开始安装之前,我们需要先确认你的电脑系统版本。
同时按下键盘上的 Windows 键 和 R 键
Windows + R 按键位置示意
Windows 键就是键盘左下角带有 Windows 图标(四个方块)的按键
弹出的窗口
在弹出的窗口中输入:
然后点击 "确定" 按钮
会弹出一个"关于 Windows"的窗口,请注意查看以下信息:
| Windows 10 家庭版 | Windows 10 企业版 |
|---|---|
| Windows 11 家庭版 | Windows 11 专业工作站版 |
|---|---|
请对照下表判断你的系统:
重要提示:如果你是家庭版,必须先升级到专业版或以上版本,否则后续步骤将无法生效!
如果你的系统已经是专业版或以上版本,请直接跳到 第四章。
Windows 家庭版可以通过输入产品密钥直接升级到专业版,无需重装系统。
根据你的系统选择对应的操作方法:
方法一:通过设置进入
Windows 10 家庭版
方法二:快捷方式
图示路径:
方法一:通过设置进入
Windows 11 家庭版
方法二:快捷方式
图示路径:
在弹出的窗口中输入以下密钥:
在下表中,可找到 Windows 每个版本的 GVLK。LTSC 是长期服务渠道,而 LTSB 是 Long-Term Servicing Branch。
Windows 11 和 Windows 10(半年频道)
有关受支持的版本和服务终止日期的信息,请参阅 Windows 生命周期情况说明书。
推荐使用专业版、企业版、专业工作站版,不推荐使用教育版和其他带有N、G、G N的版本。
📝 说明:这是微软官方提供的升级密钥,仅用于将家庭版升级到专业版,升级后仍需要激活。
如果以上密钥均失效,可以借助 https://kms.cx/ 此网站获取密钥一键激活。
重启后,再次按 Windows + R,输入 ,确认显示为 "专业版"。
此步不是必须步骤。 可直接点击跳转到第四步进行操作。
以管理员身份打开命令提示符 (cmd),逐个 ping 以下 KMS 服务器,找到可用的服务器:
判断标准:
记录下能够 ping 通的服务器地址。
从通用批量许可证密钥 (GVLK)选择对应密钥。
以管理员身份打开 PowerShell,按顺序执行以下命令:
示例(如果是专业工作站版):
示例(如果 可用):
执行以下命令检查激活状态:
或者
按照以上步骤操作,即可成功激活 Windows 系统。
我们需要下载两个压缩包:
下载步骤
下载完成后,你应该能看到这两个文件:
在安装之前,请暂时关闭你电脑上的安全软件,否则可能会被拦截导致安装失败。
常见需要关闭的软件:
⚠️ 安装完成后记得重新开启安全软件!
解压 RDP Wrapper
移动文件夹到指定位置
我们需要把解压出来的文件夹放到系统目录中:
目标位置:
完成后的路径结构:
💡 提示:如果提示需要管理员权限,请点击 "继续"。
运行安装程序
打开 rdpWrapper.exe 后,你会看到如下界面:
点击 "Install" 按钮 开始安装。Install按钮可能在界面右上角,以具体情况为准,遇到弹窗全选是或yes。
勾选对应选项
注意勾选这两个选项。
安装完成后,界面上的状态应该全部变成绿色:
全部变成绿色
检查清单:
| 状态项 | 应该显示 | 颜色 |
|---|---|---|
| Wrapper state | installed | 🟢 绿色 |
| Service state | running | 🟢 绿色 |
| Listener state | listening | 🟢 绿色 |
✅ 如果全部是绿色,恭喜你,RDP Wrapper 安装成功!
❌ 如果有红色或黄色,请参考 第八章 常见问题。
❌ 如果全部是绿色,但是无法连接与开启,请参考 第八章 常见问题。
💡 提示:这个文件夹可以放在任何位置,比如桌面、D盘等都可以。
解压后,文件夹内应包含以下文件:
运行后会弹出提示框:
点击 "确定",快捷方式就创建好了!
现在你可以在以下位置找到快捷方式:
以后只需要双击这个图标就可以打开管理系统了。
双击桌面上的 "RDP一键连接" 图标。
💡 首次运行会弹出 "用户账户控制" 窗口,请点击 "是" 允许运行。
启动后会看到如下界面:
终端
用途:连接到已创建的远程桌面用户
操作步骤:
适用场景:日常使用,快速打开多个桌面窗口
用途:创建一个新的远程桌面用户
操作步骤:
示例:
💡 命名建议:使用有意义的名称,方便日后识别。比如:weixin1、weixin2 等。
用途:查看所有已创建的用户,或修改用户的备注信息
操作步骤:
显示示例:
终端
用途:删除不再需要的用户
操作步骤:
注意:删除操作不可恢复,请谨慎操作!
用途:查看当前所有远程连接,注销断开的会话
操作步骤:
会话状态说明:
| 状态 |
|---|
💡 提示:如果遇到"连接数已满"的错误,来这里注销断开的会话即可。
输入 按回车即可退出程序。
问题表现:RDPConf 界面中某些状态显示红色或黄色,而不是全绿。
解决方案:
问题原因:有之前的会话没有正常注销,占用了连接数。
解决方案:
解决方案:
各软件添加白名单方法:
解决方案:
卸载步骤:
升级密钥只是用于升级系统版本,升级后需要单独激活 Windows。
可以使用以下方式激活:
这时首先检查Windows系统设置是否开启了远程桌面设置
如果开启后还是无法正常连接,此时检查Windows系统是否有远程桌面服务。
点击进入 在 Windows 中卸载并重新安装内置远程桌面连接应用 此链接使用 GUI 重新安装远程桌面连接应用。
点击下载Windows 64 位版本
下载安装完成后再次执行 win+R 输入 mstsc 打开远程桌面,如果出现下图,即表明成功。
远程桌面服务
| 快捷键 | 功能 |
|---|---|
| Windows + R | 打开"运行"窗口 |
| Windows + I | 打开"设置" |
| Windows + E | 打开"此电脑" |
| Ctrl + Shift + Enter | 以管理员身份运行 |
如果按照本文档操作后仍有问题,请检查:
如果依旧有问题请联系系统运维技术支持人员。
RDP Wrapper 来自 GitHub,开放源代码地址为https://github.com/rdp-wrapper/rdpWrapper
此项目可以轻松设置多个RDP会话,可移植、基于UI、脱机工作、可对抗Windows更新。
VBS(Visual Basic Script)是一种基于Visual Basic的脚本语言,全称是Microsoft Visual Basic Script Edition。它由微软公司开发,主要用于Windows环境下的自动化任务和脚本编写。
批处理文件,在DOS和Windows(任意)操作系统中,.BAT文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。这个文件的每一行都是一条DOS命令(大部分时候就好像我们在DOS提示符下执行的命令行一样),你可以使用DOS下的EDIT或者Windows的记事本(Notepad)等任何文本文件编辑工具创建和修改批处理文件。
文档结束
| 你看到的版本 | 是否可以直接使用 | 需要的操作 |
|---|
| Windows 10/11 家庭版 | ❌ 不可以 | 需要升级系统(见第三章) |
| Windows 10/11 家庭中文版 | ❌ 不可以 | 需要升级系统(见第三章) |
| Windows 10/11 专业版 | ✅ 可以 | 跳到第四章继续 |
| Windows 10/11 企业版 | ✅ 可以 | 跳到第四章继续 |
| Windows 10/11 教育版 | ✅ 可以 | 跳到第四章继续 |
| Windows 10/11 专业工作站版 | ✅ 可以 | 跳到第四章继续 |
| Windows Server(服务器版) | ✅ 可以 | 跳到第四章继续 |
| 支持的操作系统版本 | KMS 客户端产品密钥 | 版本说明 |
|---|
| Windows 11 专业版 | ||
| Windows 10 专业版 | W269N-WFGWX-YVC9B-4J6C9-T83GX | 标准专业版 |
| 包含所有专业版功能,适合大多数用户 | ||
| Windows 11 专业版 N | ||
| Windows 10 专业版 N | MH37W-N47XK-V7XM9-C7227-GCQG9 | 欧洲版专业版 |
| 移除 Windows Media Player 等多媒体组件 | ||
| Windows 11 专业工作站版 | ||
| Windows 10 专业工作站版 | NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J | 工作站版 |
| 支持高级硬件、ReFS 文件系统等 | ||
| Windows 11 专业工作站版 N | ||
| Windows 10 专业工作站版 N | 9FNHH-K3HBT-3W4TD-6383H-6XYWF | 欧洲版工作站版 |
| 工作站功能但不含多媒体组件 | ||
| Windows 11 专业教育版 | ||
| Windows 10 专业教育版 | 6TP4R-GNPTD-KYYHQ-7B7DP-J447Y | 专业教育版 |
| 专业版+教育相关功能 | ||
| Windows 11 专业教育版 N | ||
| Windows 10 专业教育版 N | YVWGF-BXNMC-HTQYQ-CPQ99-66QFC | 欧洲版专业教育版 |
| 专业教育版但不含多媒体 | ||
| Windows 11 教育版 | ||
| Windows 10 教育版 | NW6C2-QMPVW-D7KKK-3GKT6-VCFB2 | 标准教育版 |
| 专为教育机构设计 | ||
| Windows 11 教育版 N | ||
| Windows 10 教育版 N | 2WH4N-8QGBV-H22JP-CT43Q-MDWWJ | 欧洲版教育版 |
| 教育版但不含多媒体组件 | ||
| Windows 11 企业版 | ||
| Windows 10 企业版 | NPPR9-FWDCX-D2C8J-H872K-2YT43 | 标准企业版 |
| 完整企业级功能,适合大型组织 | ||
| Windows 11 企业版 N | ||
| Windows 10 企业版 N | DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4 | 欧洲版企业版 |
| 企业版功能但不含多媒体 | ||
| Windows 11 企业版 G | ||
| Windows 10 企业版 G | 中国政府版 | |
| 包含中国特定安全要求 | ||
| Windows 11 企业版 G N | ||
| Windows 10 企业版 G N | 中国政府欧洲版 | |
| 中国版+移除多媒体组件 |
| 中文显示 |
|---|
| 英文显示 |
|---|
| 含义 |
|---|
| 活动中 | 运行中 | Active | 用户正在使用 |
| 已断开 | 断开 | Disc | 用户已断开但未注销(占用资源) |
| 监听中 | 侦听 | Listen | 正常状态 |
winver来自 xxx.xxx.xxx.xxx 的回复请求超时无法访问目标主机zh.us.to1763703074786-nmx983-RDP-Wrapper.zipC:\Program Files\RDP WrapperC:\Program Files\RDP Wrapper1764248844331-fkcqan-RDP-Wrapper-Multi-User-Management-System.zip12user13451236rdpwrap.iniC:\Program Files\RDP Wrapper\rdpwrap.inicmdC:\Program Files\RDP WrapperC:\Program Files\RDP WrapperrdpWrapper.exeC:\Program Files\RDP Wrapperwinver开始 → 设置 → 更新和安全 → 激活 → 更改产品密钥开始 → 设置 → 系统 → 激活 → 升级你的 Windows 版本 → 更改📁 下载文件夹
├── 1763703074786-nmx983-RDP-Wrapper.zip
└── 1764248844331-fkcqan-RDP-Wrapper-Multi-User-Management-System.zipC:\
└── Program Files\
└── RDP Wrapper\
├── rdpWrapper.exe
└── ... 其他文件┌─────────────────────────────────────────────────────────┐
│ RDP Wrapper Configuration │
├─────────────────────────────────────────────────────────┤
│ │
│ Wrapper state: [not installed] ← 显示未安装 │
│ Service state: [stopped] │
│ Listener state: [not listening] │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Install │ │ Uninstall│ │ Update │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────┘📁 RDP-Wrapper-Multi-User-Management-System\
├── RDP连接工具.bat ← 主程序
├── 创建快捷方式.vbs ← 用于创建快捷方式
├── icon.ico ← 图标文件
└── rdp_users.txt ← 用户数据(首次运行后自动生成)┌────────────────────────────────────────┐
│ 完成 │
├────────────────────────────────────────┤
│ │
│ 快捷方式已创建! │
│ │
│ 1. 当前目录: ...\RDP企业微信多开.lnk │
│ 2. 桌面: ...\RDP企业微信多开.lnk │
│ │
│ 双击即可使用(会自动请求管理员权限) │
│ │
│ [ 确定 ] │
└────────────────────────────────────────┘ 用户名(0 返回): weixin1
密码: 123456
确认密码: 123456
备注: 企业微信1号
[OK] 用户创建成功
[OK] 已添加到远程桌面用户组
[OK] 已保存记录
是否立即连接?(Y/N): Y首次使用:
创建用户(功能2)→ 连接用户(功能1)→ 开始使用
日常使用:
打开程序 → 一键连接(功能1)→ 选择用户 → 开始使用
遇到连接问题:
会话管理(功能5)→ 注销断开的会话 → 重新连接net stop termservice /y
net start termservice打开设置 > 搜索远程桌面 > 开启远程桌面设置快捷键 win+R 输入 mstsc 打开远程桌面,如果未找到就说明此电脑没有远程桌面服务。Set WshShell = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
currentDir = fso.GetParentFolderName(WScript.ScriptFullName)
batPath = currentDir & "\RDP连接工具.bat"
iconPath = currentDir & "\icon.ico"
desktopPath = WshShell.SpecialFolders("Desktop")
shortcutPath1 = currentDir & "\RDP企业微信多开.lnk"
shortcutPath2 = desktopPath & "\RDP企业微信多开.lnk"
If fso.FileExists(iconPath) Then
iconLocation = iconPath
Else
iconLocation = "mstsc.exe,0"
End If
Set shortcut1 = WshShell.CreateShortcut(shortcutPath1)
shortcut1.TargetPath = batPath
shortcut1.WorkingDirectory = currentDir
shortcut1.WindowStyle = 1
shortcut1.Description = "RDP Wrapper 多用户管理工具"
shortcut1.IconLocation = iconLocation
shortcut1.Save
Set shortcut2 = WshShell.CreateShortcut(shortcutPath2)
shortcut2.TargetPath = batPath
shortcut2.WorkingDirectory = currentDir
shortcut2.WindowStyle = 1
shortcut2.Description = "RDP Wrapper 多用户管理工具"
shortcut2.IconLocation = iconLocation
shortcut2.Save
MsgBox "快捷方式已创建!" & vbCrLf & vbCrLf & "1. 当前目录: " & shortcutPath1 & vbCrLf & "2. 桌面: " & shortcutPath2 & vbCrLf & vbCrLf & "双击即可使用(会自动请求管理员权限)", vbInformation, "完成"@echo off
:: ================================================================
:: 自动请求管理员权限
:: ================================================================
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 正在请求管理员权限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
:: ================================================================
setlocal enabledelayedexpansion
title RDP 多用户管理工具 [管理员模式]
color 0A
set "RDP_IP=127.0.0.2"
set "RDP_PORT=3389"
set "USER_DB=%~dp0rdp_users.txt"
if not exist "%USER_DB%" (
echo # 用户名,密码,备注 > "%USER_DB%"
)
:: =============== 主菜单 ===============
:MAIN_MENU
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ RDP Wrapper 多用户管理系统 ★ ║
echo ╠══════════════════════════════════════════════════╣
echo ║ 目标: %RDP_IP%:%RDP_PORT% ║
echo ╠══════════════════════════════════════════════════╣
echo ║ [1] 一键连接用户 ║
echo ║ [2] 创建新 RDP 用户 ║
echo ║ [3] 查看/修改用户备注 ║
echo ║ [4] 删除 RDP 用户 ║
echo ║ [5] 会话管理(查看/注销) ║
echo ║ [6] 退出 ║
echo ╚══════════════════════════════════════════════════╝
echo.
set "choice="
set /p "choice= 请选择操作 [1-6]: "
if "%choice%"=="1" goto CONNECT_MENU
if "%choice%"=="2" goto CREATE_USER
if "%choice%"=="3" goto SHOW_SAVED_USERS
if "%choice%"=="4" goto DELETE_USER
if "%choice%"=="5" goto SESSION_MANAGER
if "%choice%"=="6" exit
goto MAIN_MENU
:: =============== 会话管理 ===============
:SESSION_MANAGER
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ RDP 会话管理 ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
echo 当前系统会话列表:
echo ════════════════════════════════════════════════
echo.
:: 显示会话列表
qwinsta 2>nul
echo.
echo ════════════════════════════════════════════════
echo.
echo 状态说明:
echo - Active = 活动中(正在使用)
echo - Disc = 已断开(占用连接数!)
echo - Listen = 监听中(正常)
echo.
echo ────────────────────────────────────────────────
echo.
echo [1] 注销指定会话(释放连接)
echo [2] 注销所有断开的会话
echo [3] 返回主菜单
echo.
set "sess_choice="
set /p "sess_choice= 请选择 [1-3]: "
if "%sess_choice%"=="1" goto LOGOFF_SESSION
if "%sess_choice%"=="2" goto LOGOFF_ALL_DISC
if "%sess_choice%"=="3" goto MAIN_MENU
goto SESSION_MANAGER
:: =============== 注销指定会话 ===============
:LOGOFF_SESSION
echo.
echo 提示:输入要注销的会话ID(数字)
echo 注意:不要注销 console 会话(那是你当前的桌面)
echo.
set "sess_id="
set /p "sess_id= 会话ID(0返回): "
if "%sess_id%"=="0" goto SESSION_MANAGER
if not defined sess_id goto SESSION_MANAGER
:: 验证是数字
set "valid=1"
for /f "delims=0123456789" %%i in ("%sess_id%") do set "valid=0"
if %valid% equ 0 (
echo [错误] 请输入数字
timeout /t 2 >nul
goto SESSION_MANAGER
)
echo.
echo 正在注销会话 %sess_id% ...
logoff %sess_id% 2>nul
if %errorlevel% equ 0 (
echo [OK] 会话已注销
) else (
echo [错误] 注销失败,可能会话不存在或无权限
)
timeout /t 2 >nul
goto SESSION_MANAGER
:: =============== 注销所有断开的会话 ===============
:LOGOFF_ALL_DISC
echo.
echo 正在查找并注销所有断开的会话...
echo.
set "found=0"
for /f "tokens=2,4" %%a in ('qwinsta 2^>nul ^| findstr /i "Disc"') do (
set "found=1"
echo 注销会话 %%a (状态: %%b)
logoff %%a 2>nul
)
if %found% equ 0 (
echo [提示] 没有发现断开的会话
) else (
echo.
echo [OK] 已注销所有断开的会话
)
timeout /t 2 >nul
goto SESSION_MANAGER
:: =============== 连接菜单 ===============
:CONNECT_MENU
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 选择连接用户 ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
set "count=0"
for /f "usebackq eol=# tokens=1-3 delims=," %%a in ("%USER_DB%") do (
set /a count+=1
set "user[!count!]=%%a"
set "pass[!count!]=%%b"
set "remark[!count!]=%%c"
)
if %count% equ 0 (
echo [提示] 暂无用户记录,请先创建。
echo.
pause
goto MAIN_MENU
)
echo ┌────┬────────────────┬────────────────────┐
echo │序号│ 用户名 │ 备注 │
echo ├────┼────────────────┼────────────────────┤
for /l %%i in (1,1,%count%) do (
set "u=!user[%%i]! "
set "u=!u:~0,14!"
set "r=!remark[%%i]! "
set "r=!r:~0,18!"
echo │ %%i │ !u! │ !r! │
)
echo └────┴────────────────┴────────────────────┘
echo.
set "pick="
set /p "pick= 请输入序号连接(0 返回): "
if not defined pick goto CONNECT_MENU
if "%pick%"=="0" goto MAIN_MENU
set "valid=1"
for /f "delims=0123456789" %%i in ("%pick%") do set "valid=0"
if %valid% equ 0 (
echo [错误] 请输入有效数字。
timeout /t 2 >nul
goto CONNECT_MENU
)
if %pick% lss 1 goto CONNECT_MENU
if %pick% gtr %count% goto CONNECT_MENU
set "target_user=!user[%pick%]!"
set "target_pass=!pass[%pick%]!"
:: =============== 选择分辨率 ===============
:SELECT_RESOLUTION
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 选择窗口分辨率 ★ ║
echo ╠══════════════════════════════════════════════════╣
echo ║ ║
echo ║ [1] 1280 x 720 (小窗口) ║
echo ║ [2] 1366 x 768 (笔记本常用) ║
echo ║ [3] 1600 x 900 (中等窗口) [推荐] ║
echo ║ [4] 1920 x 1080 (大窗口) ║
echo ║ [5] 全屏模式 ║
echo ║ [6] 自定义分辨率 ║
echo ║ ║
echo ║ [0] 返回 ║
echo ╚══════════════════════════════════════════════════╝
echo.
echo 当前用户: !target_user!
echo.
set "res="
set /p "res= 请选择分辨率 [0-6]: "
if "%res%"=="0" goto CONNECT_MENU
set "FULLSCREEN=0"
set "W=1600"
set "H=900"
if "%res%"=="1" (set "W=1280" & set "H=720")
if "%res%"=="2" (set "W=1366" & set "H=768")
if "%res%"=="3" (set "W=1600" & set "H=900")
if "%res%"=="4" (set "W=1920" & set "H=1080")
if "%res%"=="5" (set "FULLSCREEN=1")
if "%res%"=="6" (goto CUSTOM_RESOLUTION)
goto DO_CONNECT
:: =============== 自定义分辨率 ===============
:CUSTOM_RESOLUTION
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 自定义分辨率 ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
set "custom_w="
set /p "custom_w= 宽度: "
if not defined custom_w goto SELECT_RESOLUTION
set "custom_h="
set /p "custom_h= 高度: "
if not defined custom_h goto SELECT_RESOLUTION
set "W=%custom_w%"
set "H=%custom_h%"
set "FULLSCREEN=0"
goto DO_CONNECT
:: =============== 执行连接 ===============
:DO_CONNECT
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 正在连接... ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
echo 用户: !target_user!
echo 地址: %RDP_IP%:%RDP_PORT%
if %FULLSCREEN% equ 1 (
echo 模式: 全屏
) else (
echo 大小: %W% x %H%
)
echo.
cmdkey /delete:TERMSRV/%RDP_IP% >nul 2>&1
cmdkey /generic:TERMSRV/%RDP_IP% /user:!target_user! /pass:!target_pass! >nul
set /a "X2=100+%W%"
set /a "Y2=100+%H%"
set "RDP_FILE=%temp%\temp_connect.rdp"
if %FULLSCREEN% equ 1 (
(
echo full address:s:%RDP_IP%:%RDP_PORT%
echo username:s:!target_user!
echo screen mode id:i:2
echo desktopwidth:i:1920
echo desktopheight:i:1080
echo session bpp:i:32
echo allow font smoothing:i:1
echo allow desktop composition:i:1
echo redirectclipboard:i:1
echo authentication level:i:2
echo prompt for credentials:i:0
) > "!RDP_FILE!"
) else (
(
echo full address:s:%RDP_IP%:%RDP_PORT%
echo username:s:!target_user!
echo screen mode id:i:1
echo desktopwidth:i:%W%
echo desktopheight:i:%H%
echo winposstr:s:0,1,100,100,%X2%,%Y2%
echo smart sizing:i:1
echo session bpp:i:32
echo allow font smoothing:i:1
echo allow desktop composition:i:1
echo redirectclipboard:i:1
echo authentication level:i:2
echo prompt for credentials:i:0
) > "!RDP_FILE!"
)
echo [OK] 启动连接...
echo.
echo ────────────────────────────────────────────────
echo 如果提示"连接数量有限",请:
echo 返回主菜单 - 选择 [5] 会话管理 - 注销断开的会话
echo ────────────────────────────────────────────────
start "" mstsc "!RDP_FILE!"
timeout /t 3 >nul
goto MAIN_MENU
:: =============== 创建用户 ===============
:CREATE_USER
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 创建新用户 ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
set "new_u="
set /p "new_u= 用户名(0 返回): "
if not defined new_u goto MAIN_MENU
if "%new_u%"=="0" goto MAIN_MENU
net user "!new_u!" >nul 2>&1
if %errorlevel% equ 0 (
echo.
echo [警告] 用户已存在
set "add_exist="
set /p "add_exist= 添加到RDP组?(Y/N): "
if /i "!add_exist!"=="Y" goto ADD_EXISTING_USER
goto CREATE_USER
)
set "new_p="
set /p "new_p= 密码: "
if not defined new_p goto CREATE_USER
set "new_p2="
set /p "new_p2= 确认密码: "
if not "!new_p!"=="!new_p2!" (
echo [错误] 密码不一致
timeout /t 2 >nul
goto CREATE_USER
)
set "new_r="
set /p "new_r= 备注: "
echo.
net user "!new_u!" "!new_p!" /add /active:yes /expires:never /passwordchg:no >nul 2>&1
if %errorlevel% neq 0 (
echo [错误] 创建失败
pause
goto CREATE_USER
)
echo [OK] 用户创建成功
wmic useraccount where "name='!new_u!'" set PasswordExpires=false >nul 2>&1
net localgroup "Remote Desktop Users" "!new_u!" /add >nul 2>&1
net localgroup "远程桌面用户" "!new_u!" /add >nul 2>&1
echo [OK] 已添加到远程桌面用户组
echo !new_u!,!new_p!,!new_r!>> "%USER_DB%"
echo [OK] 已保存
echo.
set "conn_now="
set /p "conn_now= 立即连接?(Y/N): "
if /i "!conn_now!"=="Y" (
set "target_user=!new_u!"
set "target_pass=!new_p!"
goto SELECT_RESOLUTION
)
goto MAIN_MENU
:ADD_EXISTING_USER
set "exist_p="
set /p "exist_p= 密码: "
if not defined exist_p goto CREATE_USER
set "exist_r="
set /p "exist_r= 备注: "
net localgroup "Remote Desktop Users" "!new_u!" /add >nul 2>&1
net localgroup "远程桌面用户" "!new_u!" /add >nul 2>&1
findstr /i /c:"!new_u!," "%USER_DB%" >nul 2>&1
if %errorlevel% neq 0 (
echo !new_u!,!exist_p!,!exist_r!>> "%USER_DB%"
echo [OK] 已保存
)
pause
goto MAIN_MENU
:: =============== 查看/修改备注 ===============
:SHOW_SAVED_USERS
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 用户列表与备注管理 ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
set "count=0"
for /f "usebackq eol=# tokens=1-3 delims=," %%a in ("%USER_DB%") do (
set /a count+=1
set "show_user[!count!]=%%a"
set "show_pass[!count!]=%%b"
set "show_remark[!count!]=%%c"
)
if %count% equ 0 (
echo [提示] 暂无用户
pause
goto MAIN_MENU
)
echo ┌────┬──────────────┬──────────────┬──────────────┐
echo │序号│ 用户名 │ 密码 │ 备注 │
echo ├────┼──────────────┼──────────────┼──────────────┤
for /l %%i in (1,1,%count%) do (
set "u=!show_user[%%i]! "
set "u=!u:~0,12!"
set "p=!show_pass[%%i]! "
set "p=!p:~0,12!"
set "r=!show_remark[%%i]! "
set "r=!r:~0,12!"
echo │ %%i │ !u! │ !p! │ !r! │
)
echo └────┴──────────────┴──────────────┴──────────────┘
echo.
set "edit="
set /p "edit= 序号修改备注(0返回): "
if not defined edit goto MAIN_MENU
if "%edit%"=="0" goto MAIN_MENU
if %edit% lss 1 goto SHOW_SAVED_USERS
if %edit% gtr %count% goto SHOW_SAVED_USERS
set "edit_user=!show_user[%edit%]!"
set "edit_pass=!show_pass[%edit%]!"
set "old_remark=!show_remark[%edit%]!"
set "new_remark="
set /p "new_remark= 新备注: "
if not defined new_remark set "new_remark=!old_remark!"
set "TEMP_DB=%~dp0rdp_users.tmp"
echo # 用户名,密码,备注 > "%TEMP_DB%"
for /f "usebackq eol=# tokens=1-3 delims=," %%a in ("%USER_DB%") do (
if /i "%%a" equ "!edit_user!" (
echo %%a,%%b,!new_remark!>> "%TEMP_DB%"
) else (
echo %%a,%%b,%%c>> "%TEMP_DB%"
)
)
move /y "%TEMP_DB%" "%USER_DB%" >nul
echo [OK] 已更新
timeout /t 1 >nul
goto SHOW_SAVED_USERS
:: =============== 删除用户 ===============
:DELETE_USER
cls
echo.
echo ╔══════════════════════════════════════════════════╗
echo ║ ★ 删除 RDP 用户 ★ ║
echo ╚══════════════════════════════════════════════════╝
echo.
set "count=0"
for /f "usebackq eol=# tokens=1-3 delims=," %%a in ("%USER_DB%") do (
set /a count+=1
set "del_user[!count!]=%%a"
set "del_remark[!count!]=%%c"
)
if %count% equ 0 (
echo [提示] 暂无用户
pause
goto MAIN_MENU
)
for /l %%i in (1,1,%count%) do (
echo [%%i] !del_user[%%i]! !del_remark[%%i]!
)
echo.
set "pick="
set /p "pick= 序号删除(0返回): "
if not defined pick goto DELETE_USER
if "%pick%"=="0" goto MAIN_MENU
if %pick% lss 1 goto DELETE_USER
if %pick% gtr %count% goto DELETE_USER
set "del_username=!del_user[%pick%]!"
choice /c YN /n /m " 确认删除 !del_username!?(Y/N): "
if errorlevel 2 goto DELETE_USER
net user "!del_username!" /delete >nul 2>&1
echo [OK] 系统用户已删除
set "TEMP_DB=%~dp0rdp_users.tmp"
echo # 用户名,密码,备注 > "%TEMP_DB%"
for /f "usebackq eol=# tokens=1-3 delims=," %%a in ("%USER_DB%") do (
if /i "%%a" neq "!del_username!" (
echo %%a,%%b,%%c>> "%TEMP_DB%"
)
)
move /y "%TEMP_DB%" "%USER_DB%" >nul
echo [OK] 记录已清理
pause
goto MAIN_MENUping zh.us.to
ping kms.03k.org
ping kms.chinancce.com
ping kms.shuax.com
ping kms.dwhd.org
ping kms.luody.info
ping kms.digiboy.ir
ping kms.lotro.cc
ping ss.yechiu.xin
ping www.zgbs.cc
ping cy2617.jios.orgslmgr /ipk <你选择的密钥>slmgr /ipk NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84Jslmgr /skms <第一步中ping通的服务器地址>slmgr /skms zh.us.toslmgr /atoslmgr /xprslmgr /dliYYVX9-NTFWV-6MDM3-9PT4T-4M68B44RPN-FTY23-9VTTB-MP9BX-T84FV
评论