如何在Windows中清除RDP连接历史记录?
内置的Windows远程桌面连接(RDP)客户端(mstsc.exe)保存每次成功连接到远程计算机后的远程计算机名(或IP地址)和用于登录的用户名。在下一次启动时,RDP客户端向用户提供选择以前使用的连接之一的功能。用户可以从列表中选择RDS / RDP主机的名称,客户端将自动填写先前用于登录的用户名。
从最终用户的角度来看,这很方便,但是从安全角度来看是不安全的。特别是当您从公共或不受信任的计算机连接到RDP服务器时。
有关所有RDP(终端)会话的信息分别存储在每个用户的注册表配置单元中,即非管理员将无法查看另一个用户的RDP连接历史记录。
在本文中,我们将显示Windows在何处存储远程桌面连接的历史记录和保存的凭据,如何从mstsc窗口中删除条目以及清除RDP日志。
如何从注册表中删除RDP连接缓存?
有关所有RDP连接的信息存储在每个用户的注册表中。使用内置的Windows工具从RDP连接历史记录列表中删除一台或多台计算机是不可能的。您将必须手动清除一些注册表项。
- 运行注册表编辑器(regedit.exe)并浏览到注册表项HKEY_CURRENT_USER \ Software \ Microsoft \ Terminal Server Client ;
- 您在本节中需要两个注册表项:默认(存储最近10个RDP连接的历史记录)和服务器(包含所有用于登录的RDP服务器和用户名的列表);
3.展开注册表项HKEY_CURRENT_USER \ Software \ Microsoft \ Terminal Server Client \ Default,其中包含最近使用过的远程计算机(MRU –最近使用)的10个IP地址或DNS名称的列表。远程桌面服务器的名称(或IP地址)存储在MRU *的值中。参数。要清除最近的RDP连接的历史记录,请选择名称为MRU0-MRU9的所有参数,右键单击并选择Delete;
4.现在,展开键HKEY_CURRENT_USER \ Software \ Microsoft \ Terminal Server Client \ Servers。它包含该用户曾经建立的所有RDP连接的列表。用任何主机的名称(或IP地址)展开reg键。请注意UsernameHint参数的值。它显示用于连接到RDP / RDS主机的用户名。该用户名将用于自动连接到RDP主机。另外,CertHash变量包含RDP服务器SSL证书指纹(请参阅文章“为RDP配置受信任的TLS / SSL证书”);
5.为了清除所有RDP连接和保存的用户名的历史记录,必须清除服务器注册表项的内容。由于不可能一次选择所有嵌套的注册表项,因此删除整个Servers项然后手动重新创建更为容易。
6.接下来,您需要删除默认的RDP连接文件(其中包含有关最新rdp会话的信息)– Default.rdp(此文件是位于Documents目录中的隐藏文件)。
7.Windows还将最近的远程桌面连接保存在跳转列表中。如果mstsc在Windows 10搜索框中键入,以前使用的RDP连接将出现在列表中。您可以使用reg键中的注册表dword参数Start_TrackDocsHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced(将其设置为0)来完全禁用Windows 10最新文件和跳转列表中的位置(或将其设置为0),也可以通过删除目录中的文件来清除“重新发送邮件”列表%AppData%\Microsoft\Windows\Recent\AutomaticDestinations。
注意。所述清除远程桌面连接历史记录的方法适用于所有Windows桌面版本(从Windows XP到Windows 10)以及Windows Server。
清除RDP连接历史记录的脚本
上面我们显示了如何在Windows中手动清除RDP连接的历史记录。但是,手动执行此操作(尤其是在多台计算机上)非常耗时。因此,我们提供了一个小脚本(BAT文件),该脚本可自动清除RDP历史记录。
要自动执行RDP历史记录清理,您可以将此脚本放置到Windows启动或通过GPO注销脚本在用户计算机上运行。
@echo off
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default" /va /f
reg delete "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /f
reg add "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
attrib -s -h %userprofile%\documents\Default.rdp
del %userprofile%\documents\Default.rdp
del /f /s /q /a %AppData%\Microsoft\Windows\Recent\AutomaticDestinations
让我们考虑一下脚本的所有动作:
- 禁止将信息输出到控制台;
- 删除注册表项HKCU \ Software \ Microsoft \ Terminal Server Client \ Default中的所有参数(清除最近的RDP连接列表);
- 删除整个注册表项HKCU \ Software \ Microsoft \ Terminal Server Client \ Servers(清除所有RDP连接列表和保存的用户名);
- 重新创建以前删除的注册表项;
- 更改当前用户的配置文件目录中的Default.rdp文件属性(默认为“隐藏”和“系统”);
- 删除Default.rdp文件;
- 从跳转列表的最新项目中清除“远程桌面连接”条目。
此外,您可以使用以下PowerShell脚本清除RDP连接的历史记录:
Get-ChildItem "HKCU:\Software\Microsoft\Terminal Server Client" -Recurse | Remove-ItemProperty -Name UsernameHint -Ea 0
Remove-Item -Path 'HKCU:\Software\Microsoft\Terminal Server Client\servers' -Recurse 2>&1 | Out-Null
Remove-ItemProperty -Path 'HKCU:\Software\Microsoft\Terminal Server Client\Default' 'MR*' 2>&1 | Out-Null
$docs = [environment]::getfolderpath("mydocuments") + '\Default.rdp'
remove-item $docs -Force 2>&1 | Out-Null
注意。顺便说一下,RDP历史记录清理的功能已内置到许多系统和注册表“清理器”中,例如CCleaner等。
如何防止Windows保存RDP连接历史记录?
如果您不希望Windows保存RDP连接历史记录,则必须拒绝写入HKCU\Software\Microsoft\Terminal Server Client所有用户账户的注册表项。首先,在指定的注册表项上禁用权限继承(权限->高级->禁用继承)。然后通过选中用户的“拒绝”选项来更改注册表项ACL (但您应该了解这是不受支持的配置)。
结果,mstsc.exe根本无法将RDP连接信息写入注册表。
如何清除远程桌面位图缓存?
远程桌面连接客户端具有图像持久性位图缓存功能。RDP客户端将很少更改的远程屏幕片段保存为光栅图像缓存。因此,mstsc.exe客户端从本地驱动器缓存加载自上次渲染以来未更改的屏幕部分。此RDP缓存功能可减少通过网络传输的数据量。
RDP缓存是目录中的两种文件%LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache:
- *.bmc
- bin
这些文件以64×64像素图块的形式存储原始RDP屏幕位图。使用简单的PowerShell或Python脚本(可通过RDP Cached Bitmap Extractor查询轻松搜索),可以获取带有远程桌面屏幕的PNG文件,并使用它们来获取敏感信息。磁贴的大小很小,但是足以为研究RDP缓存的人员提供有用的信息。
您可以通过禁用“ 高级”选项卡上的“ 持久位图缓存”选项来阻止RDP客户端存储远程桌面屏幕图像缓存。
有时在使用RDP缓存时,它可能已损坏:
位图磁盘缓存失败。您的磁盘已满,或者缓存目录丢失或损坏。某些位图可能不会出现。
在这种情况下,您需要清除RDP缓存目录或禁用“位图缓存”选项。
清除已保存的RDP凭据
如果在建立新的远程RDP连接时,用户在输入密码之前选择了“ 记住我”选项,则用户名和密码将保存在Windows凭据管理器中。下次连接到同一台计算机时,RDP客户端会自动使用以前保存的密码在远程主机上进行身份验证。
您可以直接从客户端的mstsc.exe窗口中删除保存的RDP密码。从连接列表中选择相同的连接,然后单击“ 删除”按钮。然后确认删除已保存的凭据。
或者,您可以直接从Windows凭据管理器中删除RDP保存的密码。转到“控制面板\用户帐户\凭据管理器”部分。选择“ 管理Windows凭据”,然后在保存的密码列表中找到计算机名称(以下格式TERMSRV/192.168.1.100)。展开找到的项目,然后单击“ 删除”按钮。
在Active Directory域环境中,您可以通过使用特殊的GPO(网络访问)来禁用RDP连接的保存密码:不允许存储用于网络身份验证的密码和凭据(请参阅文章)。
删除远程主机上与RDP相关的事件日志
连接日志也保存在RDP / RDS主机端。您可以在事件查看器日志中找到有关RDP连接历史记录的信息:
- 安全;
- 应用程序和服务日志-> Microsoft-> Windows-> TerminalServices-RemoteConnectionManager->操作;
- TerminalServices-LocalSessionManager->管理员。
在本文中阅读有关RDP连接日志分析的更多信息。
您可以使用wevtutil或PowerShell清除RDP服务器上的事件日志。