我们有 USB 扫描仪,需要 Num Lock 键处于打开状态才能正常工作。我注意到,当我远程登录到 PC(远程桌面)并且我的 Num Lock 键处于关闭状态时,远程 PC 也会在会话终止后将其关闭。我该如何防止这种情况发生?我希望在 RD 会话终止后可以恢复键盘设置。
答案1
您必须定义在终止远程桌面会话时必须在远程 PC 上执行某项任务。我更喜欢在某些条件下在远程计算机上运行一个简单的批处理文件(见下文)。此批处理文件使用命令行工具“klocks.exe”:
klocks.exe -scroll +num -c
此行仅激活 NUMLOCK 状态(并停用 SCROLL 和 CAPSLOCK 状态)。不幸的是,我注意到原始下载站点不再可用(http://www.commandline.co.uk/klocks/index.html),但也许您会在其他地方找到它。作为替代命令行工具,您可以使用工具 numlock.exe (http://www.rjlsoftware.com/software/utility/numlock/),但我确信还有其他类似的命令行工具。第三种可能性可能是使用一个小的 VBS 脚本来设置 NUMLOCK 状态,但我还没有尝试过(请参阅faq-o-matic.net):
set WshShell = CreateObject("WScript.Shell") WshShell.SendKeys "{NUMLOCK}"
无论你选择哪个脚本,当你“终止” RDP 会话时,它都会被执行。有两种方法可以终止 RDP 会话:
- 只需关闭远程桌面窗口即可断开与远程用户会话的连接
- 通过注销来终止远程用户会话
对于简单的“断开远程用户会话”,您应该使用远程 PC 上的 Windows 任务计划程序。只需定义触发器“断开用户会话”,并将“NUMLOCK-on”脚本定义为操作即可。
对于从远程用户会话“注销”,即真正终止会话,使用任务计划程序并不容易,因为没有预定义的“注销”触发器。相反,您应该使用本地组策略编辑器来定义注销脚本(在用户配置 > Windows 设置 > 脚本 > 注销中)。
顺便说一句,为了确保远程用户登录时(即不仅仅是进入现有会话)在远程计算机上始终激活 NUMLOCK,有几种可能性:
- 使用本地组策略编辑器定义登录脚本
- 使用任务计划程序定义带有触发器“登录”的任务
- 将注册表值 InitialKeyboardIndicators 设置为 2(HKCU\Control Panel\Keyboard,请参阅https://technet.microsoft.com/en-us/library/cc978657.aspx)
- 使用注册表中的不同自动运行选项
答案2
这在之前的回答中提到过(虽然隐藏了),所以我要为其他看到这里的人强调一下,因为我直到做了一堆事情才发现它搜索我:
- 打开注册表编辑器。
- 导航HKEY_USERS.Default\控制面板\键盘
- 更改值初始键盘指示器 至 2。