如何清除window上的RDP连接记录

声明:
此文为翻译文,原博连接:http://woshub.com/how-to-clear-rdp-connections-history/#h2_3

 
    每次通过RDP成功登陆到远程计算机,windows客户端都会将远程计算机名(或者是ip地址)和用来登陆的账户名保存下来。在下一次mstsc启动的时候,会将之前连接过记录提供给用户选择其中一个进行连接。连接时会自动为你填充之前登陆过的账户名。
    从用户的角度来看这是非常方便的,但是从安全角度来看的话,是非常不安全的。尤其是当rdp连接是从公共或不受信任的计算器启动。
    远程桌面的会话信息分别存放在每个账户的配置文件中,即用户(假设是一个普通账户,而不是管理员)不能查看其它用户的RDP连接历史。
 
在这篇文章中,我们了解到windows将远程桌面连接的历史记录存放在哪里,以及如何清除他。
如何从注册表中删除RDP连接缓存
所有rdp登录信息都存储在每个用户对应的注册表中。用windows内置工具去清除一个电脑或者多个电脑的rdp历史连接记录列表是不可能的,你必须手动删除一些注册表键值
1.运行regedit.exe注册表编辑工具,找到键HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server Client
2.你需要删除两个键值    
  • Default :存储最近10次的rdp登录
  • Server:存储着所有连接过的rdp的ip地址和登录账户
3.展开包含最近(MRU-Most Recently Used)10次使用的ip地址或DNS名的建HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault,远程连接的账户名(或者ip)都存储在MRU*这个键值。选择删除MRU0-MRU9就可以清除掉最近10次的rdp登录
4.接下来,展开HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers,它包含了所有和这台电脑建立过连接的RDC(远程桌面客户端),如果你展开对应节点,你可以看到包含登录名的UsernameHit的键。
5.清除所有RDP连接和保存用户名的历史记录,你必须清除服务器注册表键值里面的内容。因为不能选择全部进行删除,所以删除建Server再手动创建它是更容易。

6.除了删除指定的注册表外,你还需要删除包含默认RDP连接的Default.rdp文件(包含最新的RDP会话信息) Default.rdp文件被设置为隐藏属性。
注意
次清除方法支持版本:Windows xp Vista,Windows 7,Windows 8 ,Windows 10,服务器平台,比如:Windows server 2003/2008/2012/2016
 
如何用脚本清除掉RDP连接历史记录
上面我们讨论了如何通过注册表去删除rdp历史记录,但是手工操作相对而言很耗时,特别是在电脑很多的情况下。因此,我们提供一个小脚本(bat文件),来自动清除历史记录。
想要自动化清除rdp历史记录,你可以把这个脚本放在Startup文件夹下或者将创建一个组策略
@echo off
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault" /va /f
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers" /f
reg add "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers"
cd %userprofile%documents
attrib Default.rdp -s -h
del Default.rdp

  

 
注意:
在某些情况下,Dcouments目录(c:users\%username%documents)能够移动到其他标准目录,例如:由于系统驱动器空间不足,在另一个分区上。这种情况下,你就需要改变路径或者手动查找default.rdp
我们来看一下脚本的所有行为
  • 禁止将信息输出传到控制台
  • 删除HKCUSoftwareMicrosoftTerminal Server ClientDefault(清除最近10条rdp)
  • 删除HKCUSoftwareMicrosoftTerminal Server ClientServers整个目录(清除rdp连接历史和保存的用户名)
  • 重新创建Server注册表
  • 进入default.rdp文件所在目录
  • 修改default.rdp的文件属性
  • 删除default.rdp文件
 
此外,你还可以用一下powershell脚本来清除rdp连接历史记录
Get-ChildItem "HKCU:SoftwareMicrosoftTerminal Server Client" -Recurse | Remove-ItemProperty -Name UsernameHint -Ea 0
 Remove-Item -Path 'HKCU:SoftwareMicrosoftTerminal Server Clientservers' -Recurse  2>&1 | Out-Null
 Remove-ItemProperty -Path 'HKCU:SoftwareMicrosoftTerminal Server ClientDefault' 'MR*'  2>&1 | Out-Null
 $docs = [environment]::getfolderpath("mydocuments") + 'Default.rdp'
 remove-item  $docs  -Force  2>&1 | Out-Null 
注意:
顺便说一下,清除RDP历史记录的特征可以使用CCCleaner等
如果你想完全禁用远程桌面的历史,你可以尝试阻止每个人写入这些注册表。(但是你应该知道这是一个不被支持的配置)
 
清除缓存的rdp凭据
如果在建立一个新的远程rdp连接时,输入密码之前用户选择了允许我保存凭据将会被保存在系统凭据管理器中。下一次 你通过rdp连接这台电脑的时候,rdp客户端会自动使用之前保存过的密码来授权给远程桌面
 
你可以直接从windows凭据管理器删除保存的密码,转到控制面板→用户账户→管理您的凭据,展开对应的凭据,善后选择从保管库中删除
 
在域环境中,你可以通过采用特殊的网络访问政策来禁止保存rdp密码:不允许为网络身份验证存储密码和凭据(详情可见文章)
 
原文地址:https://www.cnblogs.com/kangxiaopao/p/8509111.html