Встроенный Remote Desktop Connection (
mstsc.exe)
клиент Windows сохраняет имена (IP адреса) удаленных серверов и пользователей в истории RDP подключений. RDP клиент при следующем запуске выбрать одно из сохраненных подключений и автоматически подставит имя пользователя. Если вы используете общедоступный или недоверенный компьютер, вы можете очистить историю RDP подключений в целях безопасности
В этой статье мы покажем, где в Windows хранится история подключений к удаленным рабочим столам и сохраненные пароли, и каким образом можно эту историю очистить.
Удалить историю RDP подключений в Windows
Windows хранит историю RDP подключений в нескольких местах и для полной очистки истории придется удалить данные отовсюду.
Удалить историю RDP в реестре пользователя
- Откройте редактор реестра
regedit.exe
и перейдите в HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client; - В подразделе Default хранятся записи реестра история о 10 последних RDP подключениях. Имена параметров называются MRU0-MRU9 (MRU – Most Recently Used), в значениях содержатся IP адресов/имен RDP хостов. Выберите все параметры реестра в ветке и удалите;
- Затем разверните ветку Servers. Здесь хранится список всех RDP серверов и сохраненных учетных записей пользователей, использующихся ранее. Имя пользователя содержится в параметре UsernameHint. Это имя автоматически подставляется в окно клиента mstsc.exe при подключении к этому RDP хосту. В параметре CertHash хранится отпечаток RDP сертификата сервера (см. статью о настройке доверенных TLS/SSL сертфикатов для RDP);
- Для очистки очистить истории RDP подключений нужно удалить содержимое ветки реестра Servers. Проще всего просто удалить ветку Servers целиком, а затем пересоздать ее вручную.
Удалить файл Default.rdp
Затем удалите скрытый файл RDP подключения Default.rdp в профиле пользователя
%userprofile%\Documents
. В нем хранится информация о самом последнем RDP подключении.
Просмотр и очистка журналов RDP подключений клиента
При подключении клиент RDP также сохраняет лог в журнал Event Viewer (Applications and Services Logs -> Microsoft -> Windows -> TerminalServices-ClientActiveXCore -> Microsoft-Windows-TerminalServices-RDPClient/Operational).
Чтобы просмотреть список всех исходящий RDP подключений, отфильтруйте событий из Event Viewer с помощью командлета Get-WinEvent:
$properties = @(
@{n='TimeStamp';e={$_.TimeCreated}}
@{n='LocalUser';e={$_.UserID}}
@{n='Target RDP host';e={$_.Properties[1].Value}}
)
Get-WinEvent -FilterHashTable @{LogName='Microsoft-Windows-TerminalServices-RDPClient/Operational';ID='1102'} | Select-Object $properties
Вы можете очистить этот журнал из консоли Event Viewer или с помощью команды:
WevtUtil cl Microsoft-Windows-TerminalServices-RDPClient/Operational
Очистка истории RDP в меню Пуск и таскбаре
Если вы наберете mstsc в поисковой строке Windows, или щелкните правой кнопкой по клиенту в панели задач, вы увидите в списке Recent историю предыдущих RDP подключения. Чтобы очистить историю RDP в меню пуск и списках быстрого перехода (jump lists), очистите списки Resent Items, удалив файлы в каталоге
%AppData%\Microsoft\Windows\Recent\AutomaticDestinations
.
Скрипт очистки истории (логов) RDP подключений
Для быстрой очистки истории RDP подключений в Windows вы можете воспользоваться готовым BAT скриптом:
@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
Аналогичный 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
$docsfoldes = [environment]::getfolderpath("mydocuments") + '\Default.rdp'
remove-item $docsfoldes -Force 2>&1 | Out-Null
Очистка Bitmap кэша клиента RDP
Клиент Remote Desktop Connection по умолчанию сохраняет редко изменяющиеся области удалённого рабочего стола в виде кэша растровых изображений (persistent bitmap caching). Благодаря кэшу клиента RDP позволяет существенно уменьшить трафик, передаваемый через сеть.
Кэш RDP клиента хранится в файлах *.bmc и *.bin в каталоге
%LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache
:
В кэше RDP хранятся сырые растровые изображения RDP экрана в виде плиток 64×64 пикселя. С помощью простых PowerShell или Python скриптов (ищутся по запросу RDP Cached Bitmap Extractor) можно собрать из PNG файлов кэша большие области удаленого рабочего стола.
В целях безопасности рекомендует очистить папку RDP кэша и запретить RDP клиенту сохранять изображение экрана в кэш. Отключите опцию Persistent bitmap caching (Постоянное кэширование точечных рисунков) на вкладке Experience в клиенте.
Как запретить Windows сохранять историю RDP подключений?
Если вы хотите, чтобы Windows не сохраняла историю RDP подключений, нужно запретить запись в ветку реестра HKCU\Software\Microsoft\Terminal Server Client. Сначала отключите наследование разрешений на ветке (Permissions -> Advanced -> Disable inheritance). Затем измените ACL на ветку, выставив Deny галочку для всех пользователей, администраторов и даже SYSTEM. (но, вы должны понимать, что это уже unsupported configuration…).
Удаление сохраненных RDP паролей
Клиент RDP позволяет сохранять пароль пользователя для подключений во встроенный диспетчер учетных данных Windows (Credential Manager) и автоматически подключаться к удаленному хосту без ввода пароля.
Вы можете удалить сохраненные пароля для RDP из окна Credential Manager (выполните команду
rundll32.exe keymgr.dll,KRShowKeyMgr
) и удалите все записи с префиксом
TERMSRV\
.
Или вы можете очистить сохраненные учетные данные для RDP с помощью команды:
For /F "tokens=1,2 delims= " %G in ('cmdkey /list ^| findstr "target=TERMSRV"') do cmdkey /delete %H
Отличная статья, спасибо за толковый материал.
С правами рядового юзера должно работать? У меня не работает. Скрипт после успешного выполнения трех операций пишет «Не найден файл: Default.rdp», и сервер все равно висит в списке mstsc.
С правами рядового пользователя удаляется история rdp подключений, хранящяяся в реестре. Адрес последнего сервера, к которому подключались по rdp хранится в файле Default.rdp, поэтому стоит найти и удалить его руками. Проверьте в папке %userprofile%\documents\ этот файл лежит?
> Проверьте в папке %userprofile%\documents\ этот файл лежит?
Проверил — нету его там.
Попробуйте найти файл Default.rdp поиском.. Не забудьте, что этот файл по-умолчанию скрыт.
И еще один вопрос: какая ОС? Win 7 Русская?
Нашел! Действительно, он там был. Почему же его скрипт не видел?
Ага. Когда я попытался его запустить из Проводника, он мне выдал его свойства с надписью «Осторожно, этот файл был получен с другого компьютера…» и кнопочкой Разблокировать. Я нажал ее. Тогда после запуска батника уже открылась консоль и удалился файл Default.rdp. Спасибо!
Надыбал утилиту Remote Desktop History AutoCleaner. Всё стало проще 🙂
Подскажите пожалуйста, как удалить сохраненную информацию о подключении к небезопасному компьютеру? Что бы повторно вышло предупреждение, что компьютер может быть не безопасен.
Приведенного выше сценарий не помогает?
Правильно ли я понял, что требуется удалить данные о недоверенных сертфикатах RDP серверов (окно «The identity of the remote computer cannot be verified», которые были добавлены пользователем в доверенные проставкой галки «Don’t ask me again for connections to this computer»?
Эти сертфикаты удаляются из mmc консоли управления сертификатам: mmc.exe -> Add Snap In -> Cerificates -> Computer Account -> Local Computer
Найдите и удалите эти сертфикаты в контейнере Remote Desktop -> Certificates.
Если не удаляется Default, помещайте батник в папку с файлом.
Remote Desktop History AutoCleaner — крутая штука и бесплатная. Антивирь вроде не ругался.
После установки прячется в компе, и если я правильно понял, по наблюдениям, то после закрытия RDP, максимум в течении 20 секунд зачищает следы. Как будто и не вводилось ничего.
Спасибо за статью, добавил в закладки.
Во многих местах подключаюсь к серверу своему, приходится чистить, чтобы не мешало и не светилось подключение на чужом ПК 🙂
Спасибо, статья замечательная.
Спасибо за статью!
Однако, удаление Default.rdp при запуске скрипта с диска отличного от C: не сработает ибо cd на другой диск невозможно. Лучше последние три строки заменить на:
attrib -s -h %userprofile%\documents\Default.rdp
del %userprofile%\documents\Default.rdp
Все верно, лучше задавать путь через переменную окружения. Это универсально 🙂
Спасибо!
А есть ли способ передавать имя пользователя для удаленного подключения через командную строку или записать в файл подключения — *.rdp, чтобы имя пользователя не сохранялось ? Чтобы все было(все параметры подключения) в файле *.rdp?
Все, всем спасибо, нашел:
username:s:имя_пользователя
Премного благодарна. Очень полезный пост!
Спасибо за статью! Мне помогло «Удаление журнала RDP подключений из реестра системы». Наконец-то можно нормально работать сервером.
Не могу очистить списки Resent Items ((
Файлы в каталоге %AppData%\Microsoft\Windows\Recent\AutomaticDestinations удаляю, а они вновь возрождаются!
=O
)) Спасибо за статью!
Остальное всё работает ))
Ну тут главное их удалить, чтобы история сесиий пропала 🙂 Новые будут появляться пока вы совсем не отключите recent items (в общем то удобная штука).
В том-то и дело, что история не пропадает.
Я закрываю все RDP сессии, руками удаляю эти файлы и они возрождаются в ту же секунду.
((
и по-прежнему присутствуют в Resent Items ((
Запретил сохранять историю RDP подключений, но в джамп листе все ещё появляется Ip к которому подключался, так должно быть или я что-то неправильно делаю?
Вы можете отключить ведение истории быстрого перехода с помощью dword параметра реестра Start_TrackDocs в ветке HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced
Не понимаю как это сделать, у меня по этому направлению отсуствует файл Start_trackDocs.
Помогите отключить этот чертов JUnp list
Добрый день.
Есть ли какой либо вариант в 10 перестать подставлять по умолчанию учетную запись в RDP сессию?
Приходится постоянно выбирать «больше вариантов» и указывать учетные записи.
Так же в статью нужно добавить этот метод (мне помог он):
Открыть диспетчер учетных данных в Windows можно:
из классической панели управления (Control Panel\User Accounts\Credential Manager, Панель управления -> Учетные записи пользователей -> Диспетчер учетных данных);
из команднойстроки: control /name Microsoft.CredentialManager
Сохраненный пароль для RDP подключения сохраняется в формате TERMSRV\hostname .
В статье есть упоминание команды об очистке сохраненных RDP паролей в CredentialManager:
For /F "tokens=1,2 delims= " %G in ('cmdkey /list ^| findstr "target=TERMSRV"') do cmdkey /delete %H