При использовании встроенного клиента подключений через удалённый рабочий стол (mstsc.exe) нужно быть готовым к тому, что Windows сохраняет историю подключений. Сохраняются имя или IP-адрес удалённого устройства и имя пользователя, под которым было осуществлено подключение. Иногда это может приводить к глюкам операционной системы. Впрочем, и без последних иногда возникает необходимость очистить историю RDP-подключений.
К примеру, Вы подключаетесь по RDP с общедоступного компьютера. Не лучшая мысль, но иногда так складываются обстоятельства. Информация о подключениях хранится в реестре Windows отдельно для каждого пользователя. Таким образом, если пользователь не обладает правами администратора в системе, историю чужих подключений он не посмотрит. А вот администратор может посмотреть чужие подключения.
Очистка истории подключений через RDP
Итак, посмотрим, что у нас в реестре. Откройте реестр Windows командой regedit. Можно вбить в командной строке или через Пуск → Выполнить.
Нас интересует ветка HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client. Обратим внимание на подразделы Default и Servers. Первый хранит информацию о 10 последних подключениях, а второй содержит в себе перечень всех удалённых устройств и имён пользователей, которые использовались для подключения по RDP.
Зайдя в HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Default, вы увидите десять ключей реестра с именами от MRU0 по MRU9 (Most Recently Used). Удалите их, чтобы очистить историю подключений по RDP.
Если развернуть HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers, то можно увидеть перечень хостов, к которым ранее подключались под текущим пользователем. Интересны ключи UsernameHint и CertHash. Это имя пользователя, которое ранее использовалось для подключения к хосту, и отпечаток RDP-сертификата сервера. Имя пользователя из UsernameHint будет подставлено при следующей попытке подключения к удалённому компьютеру.
Удалите содержимое ветки HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers. Если подразделов там много, можно удалить раздел Servers целиком, а потом создать новый пустой с таким же именем.
Далее необходимо удалить файл Default.rdp из каталога Документы текущего пользователя. Файл является скрытым, поэтому предварительно нужно включить отображений скрытых файлов и папок.
Но и это ещё не всё. Информацию о последних RDP-сессиях Windows хранит ещё и в списках быстрого перехода (jump lists). Если набрать в поисковой строке «mstsc», то можно будет увидеть совершённые ранее подключения. Чтобы отключить ведение истории, откройте в реестре ветку HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced, найдите там ключ Start_TrackDocs (или создайте, если ключ отсутствует) и задайте ему значение 0 (тип DWORD). Для очистки уже существующих списков, нужно удалить файлы в каталоге %AppData%\Microsoft\Windows\Recent\AutomaticDestinations.
Вышеописанные действия можно автоматизировать. Ниже пример скрипта:
@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
Что делает данный скрипт?
- Отключение вывода информации в консоль;
- Очистка информации о последних 10 подключениях;
- Очистка информации о ранее сделанных подключениях путём пересоздания раздела Server;
- Убирание атрибутов Скрытый и Системный у файла Default.rdp в каталоге текущего пользователя;
- Удаление файла Default.rdp;
- Очистка списков быстрого перехода.
Скрипт с подобной функциональностью в PowerShell будет выглядеть следующим образом:
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
Запрет на сохранение истории подключений через RDP
Кроме непосредственно очистки истории RDP-подключений можно запретить Windows собирать эту историю как таковую. К сожалению, разработчики Windows не предусмотрели возможность такого отключения через интерфейс системы, и нам снова придётся лезть в реестр.
Щёлкнув правой кнопкой мыши по разделу HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client, выберите пункт Разрешения.
В открывшемся окне нажмите на кнопку Дополнительно и отключите наследование разрешений от родительских объектов. После этого надо выставить запреты на любые действия с этой веткой для всех пользователей. Это помешает операционной системе записать информацию о подключениях в реестр.
Отключение кэширования изображений
Во встроенном RDP-клиенте Windows есть функция кэширования изображений. Клиент RDP сохраняет редко изменяющиеся куски удалённого рабочего стола в виде растровых изображений. Это уменьшает количество данных, передающихся по сети.
Кэш находится в папке %LOCALAPPDATA%\Microsoft\Terminal Server Client\Cache и представляет из себя файлы с расширениями bmc и bin. В них хранятся растровые изображения размером 64×64 пикселя. При помощи несложных скриптов из этих изображений можно сложить часть удалённого рабочего стола.
Для отключения кэширования изображений нужно открыть настройки RDP-клиента, нажав Показать параметры. На вкладке Взаимодействие нужно найти пункт Постоянное кэширование точечных рисунков и снять галочку.
После всех этих манипуляций подключения к удалённому рабочему столу в Windows станут чуть приватнее.
Статьи по теме: