Меню Закрыть

Terminal server client cache

Содержание

RDP клиент в Windows (mstsc.exe) при каждом успешном соединении с удаленным компьютером сохраняет в системе его имя (или ip адрес) и имя пользователя, под которым был выполнен вход. При следующем запуске клиент RDP предлагает пользователю выбрать одно из подключений, которыми он уже пользовался ранее. Пользователь может выбрать из списка имя удаленного rdp сервера, и клиент автоматически подставляет используемое ранее для входа имя пользователя.

Это удобно с точки зрения конечного пользователя, однако несекьюрно с точки зрения безопасности, особенно когда rdp соединение инициируется с общедоступного или недоверенного компьютера.

Информация о терминальных сессиях хранится индивидуально для каждого пользователя компьютера в его профиле, т.е. пользователь (подразумевается рядовой пользователь, а не администратор) не сможет просмотреть историю подключений другого пользователя.

В этой статье мы покажем, где в Windows хранится история подключений к удаленным рабочим столам и сохраненные пароли, и каким образом можно эту историю очистить.

Удаление журнала RDP подключений из реестра системы

Информация о всех RDP подключениях хранится в реестре каждого пользователя. Удалить компьютер(ы) из списка истории rdp подключений штатными средствами Windows не получится, придется вручную удалять ключи в системном реестре.

  1. Откройте редактор реестра regedit.exe и перейдите в ветку HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server Client
  2. Нас интересуют две подветки: Default (хранит историю о 10 последних rdp подключениях) и Servers (содержит список всех rdp серверов и имен пользователей, используемых ранее для входа)
  3. Развернем ветку реестра HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault, в которой содержится список 10 адресов или имен удаленных компьютеров, которые использовались последними (MRU – Most Recently Used). Имя (ip адрес) терминального сервера хранится в значении ключа MRU*. Чтобы очистить историю последних rdp-соединений, выделите все ключи с именами MRU0-MRU9, щелкните правой клавишей и выберите пункт Delete.
  4. Развернем далее ветку HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers. В ней содержится список всех RDC (remote desktop client) соединений, которые когда либо устанавливались с данного компьютера. Если развернуть ветку с именем (ip адресом) любого сервера, то в ключе UsernameHint (подсказка имени пользователя) можно увидеть имя пользователя, под которым осуществлялось rdp соединение.
  5. Чтобы очистить историю всех rdp-подключений и сохраненных имен пользователей необходимо очистить содержимое ветки реестра Servers. Т.к. выделить все ветки не получится, проще всего удалить целиком Servers ветку, а затем пересоздать ее вручную.
  6. Помимо указанных ключей реестра, необходимо удалить файл дефолтного rdp подключения Default.rdp (содержит информацию о самом последнем rdp подключении. Файл является скрытым и находится в каталоге Documents (Документы).

Очистка истории (логов) RDP подключений с помощью скрипта

Выше мы разобрали методику «ручной» очистки истории соединений. Однако делать это вручную (особенно на нескольких компьютерах) – занятие достаточно долгое. Поэтому мы предлагаем небольшой скрипт (bat-файл), который позволяет автоматически очищать историю подключений к удаленным рабочим столам.

Читайте также:  Comodo как добавить файл в исключения

Для автоматизации очистки истории rdp, данный скрипт можно поместить в автозагрузку, либо распространить его на компьютеры пользователей с помощью групповой политики.

Последовательно разберем все действия скрипта:

  1. Отключаем вывод информации в консоль
  2. Удаляем все значения в ветке HKCUSoftwareMicrosoftTerminal Server ClientDefault (очищаем список последних rdp соединений)
  3. Удаляем все содержимое ветки HKCUSoftwareMicrosoftTerminal Server ClientServers (очистка истории rdp подключений и сохраненных имен пользователей)
  4. Пересоздаем удаленную ранее ветку
  5. Переходим в каталог с файлом Default.rdp. Отметим, что в данном случае путь к папке «Документы» будет отличаться в зависимости от версии и языка Windows. В данном примере указан путь для Windows 7 En, для XP RUS – он будет выглядеть cd %userprofile%”Мои документы”, для XP ENG — cd %userprofile%”My Documents” и т.д.
  6. Меняем атрибуты файла Default.rdp — по умолчанию он является системным и скрытым (как отобразить скрытые файлы в Windows)
  7. Удаляем файл Default.rdp

Скачать готовый скрипт можно тут: CleanRDPHistory.bat

Кроме того, очистить историю подключений RDP можно с помощью следующего PowerShell скрипта:

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
$docsfoldes = [environment]::getfolderpath("mydocuments") + ‘Default.rdp’
remove-item $docsfoldes -Force 2>&1 | Out-Null

В том случае, если в Windows необходимо полностью заблокировать ведение истории подключений удаленного рабочего стола, можно попробовать запретить системе запись в данную ветку реестра (но, стоит понимать, что это уже unsupported configuration…).

Удаление сохраненных RDP паролей

В том случае, если при установке удалённого RDP подключения, перед вводом пароля пользователь поставил галку Remember Me / Запомнить меня, то имя пользователя и пароль будут сохранены в системном менеджере паролей системы (Credential Manager). При следующем подключении к этому же компьютеру, RDP клиент автоматически использует сохранённый ранее пароль для авторизации на удаленном компьютере.

Удалить данный пароль можно прямо из окна клиента mstsc.exe. Выберите в списке подключений тоже самое подключение, и нажмите на кнопку Delete. Далее подтвердите удаление сохраненного пароля.

Либо можно удалить сохраненный пароль непосредственно из менеджера паролей Windows. Откройте в панель управления и перейдите в раздел Control PanelUser AccountsCredential Manager. Выберите Manage Windows Credentials и в списке сохранённых паролей найдите имя компьютера (в формате TERMSRV/192.168.1.100). Разверните найденный элемент и нажмите на кнопку Remove.

В доменной среде запретить сохранение паролей для RDP подключений можно с помощью политики Network access: Do not allow storage of passwords and credentials for network authentication (см. статью).

Возникла проблема в виде динамично убывающем свободном месте на жестком диске терминального сервера, через который, согласно корпоративной политике, пользователи «ходят в интернет». После анализа стало понятно что львиную долю дискового пространства занимают различные временные каталоги. Для борьбы с таким мусором быстро наваял скрипт на PowerShell:

Читайте также:  Гхп директ рус подольск прислали заказное письмо
$OtherCleanPathsArr = “C:Temp*”, “C:WindowsTemp*”, “C:swsetup”#системные пути для очистки

$InProfilesCleanPathsArr = “AppDataLocalTemp*”, “AppDataLocal*.auc”, “AppDataLocalMicrosoftTerminal Server ClientCache*”, “AppDataLocalMicrosoftWindowsTemporary Internet Files*”, “AppDataLocalMicrosoftWindowsWERReportQueue*”, “AppDataLocalMicrosoftWindowsExplorer*”, “AppDataLocalMozillaFirefoxProfiles*”

#пути в профилях для очистки

$Profiles = Get-ChildItem (Get-ItemProperty -path “HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionProfileList”).ProfilesDirectory -Exclude “Администратор”, “Administrator”, “Setup”, “Public”, “All Users”, “Default User”

#извлекли из реестра местоположение профилей, сформировали список

ForEach ($Path in $OtherCleanPathsArr) <

Remove-Item -Path $Path -Recurse -Force -ErrorAction SilentlyContinue

ForEach ($Profile in $Profiles) <

ForEach ($Path in $InProfilesCleanPathsArr) <

Remove-Item -Path $Profile$Path -Recurse -Force -ErrorAction SilentlyContinue

Запускаем и смотрим на результат… В моем случае из порядка 100Gb занятого места освободилось 40Gb. Думаю результат не плохой=)
Тут нужно сказать что политика по-умолчанию не даст запустить скрипт.

Я в своем случае просто разрешил запуск всех локальных скриптов скриптов из Internet, но подписанных:

Ну и не забываем автоматизировать процесс чистки — настраиваем запуск скрипта по рассписанию, помня что сам по себе он не запустится, а нужно запускать в оболочке PowerShell:



Всем привет, прошу помощи (комменты для минусов вложу в пост).

Есть обычный сервер на винде, на него через RDP подрубаются юзеры с тонких клиентов и там работают. Вопрос в том, чтобы сделать автоматическую очистку кэша/куки/загрузок/temp у всех юзеров. Может кто то сможет помочь советом как это сделать?

Пы.Сы к домену не завязан.

Пы.Пы.Сы Лига сисадминов не публикует

Дубликаты не найдены

Чувак, честно, зачем ты этим занимаешься, если не можешь нагуглить? Видно, что ты не знаешь даже, что нужно искать. Ты ведь по-любому это за деньги получаешь. На пикабу конечно помогут, не сомневайся, но блядь как вы работаете на своих должностях и деньги получаете, если вы нихуя не знаете. Просто страшно нарваться на такого find-pikabu-врача.

Много мелких фирм, где когда-то админ все настроил, а по факту человека на должности нет. В итоге задачу решает абы кто.

ахахах, пикабу врач)

Увы чот гугл весь облазил — не нашел ничего адекватного/подходящего под мои цели/задачи, кстати, уже и на помощь пикабу то плюнул, на питоне пишу сижу именно то, что надо)

Не нашёл, так как не знаешь что искать, но всё-таки молодец, что можешь сам написать — это любимое занятие изобретать велосипеды со своими неповторимыми колёсами, они едут быстрее.

чувак, не знаешь чем помочь клавиатурку сворачиваем и мимо проходим, я тебя не заставляю, давай, кш отседава

Я за тебя делать буду? Ради интереса зашёл в адм. шаблоны — одну галочку поставить и куки по закрытию ie у всех как небывало. По остальным тоже всё гуглится, только не на русском. Так что, любитель ты преувеличить.

Читайте также:  Изменить язык системы windows 10 на русский

скрипт на выход пользователя из системы.

пути кеша и куков есть в инете для всех популярных браузеров.

как прописать все это чтобы у всех одновременно все чистить?

ручками + одинаковое время не?) был бы домен — возможно можно было это сделать через политики.

Не совсем уверен — но прописать скрипт на все машины через psexec (имена машин брать через текстовый файл)

политики есть и без домена. домен — это только их централизация.

как я понял автору лень все это делать вручную на каждом ПК и он хочет это сделать как то сразу и как то всем 🙂

Есть обычный сервер на винде, на него через RDP подрубаются юзеры с тонких клиентов

допустим и что дальше? какая суть в данном комменте?

много народу работают на одном сервере. ползают по инету, забивают профили времянками и кешем. при отключении в профиле вся эта херь остается. ее надо почистить. почистить надо только на одном компьютере, но во всех профилях пользователей.

В таком варианте да согласен

Ты про GPO вообще слышал?

ты новое слово загуглил что ли? gpo мне не вариант, так как к домену не завязан, или читать не умеешь? https://technet.microsoft.com/ru-ru/library/hh147307(v=ws.10. на те мануальчик, а то услышал звон не знаешь где он

не прокатит. иногда глючит, т.к. права на папки профилей пользователей кривоваты.

это понятно, но как сделать чтобы у всех одновременно чистить?

Пример скрипта который отчистит файлы по указанным директориям от лица пользователя

set "IECache=appdatalocalMicrosoftWindowsTemporary Internet Files"

set "ChromeCache=appdatalocalGoogleChromeUser DataDefaultCache"

For /F "delims=" %%a in (‘dir /b /ad-L "%userprofile%..*"’) do (

call :LogDeleted "%userprofile%..\%%a\%IECache%"

call :LogDeleted "%userprofile%..\%%a\%ChromeCache%"

pause & goto :eof

for /F "delims=" %%a in (‘dir /b /s /a-d "%

2>NUL 1>&2 del /f /a "%%a"

if not exist "%%a" echo Удален "%%a">> "%LogFile%"

Скрипт чтобы удалить файлы от имени админа

$OtherCleanPathsArr = “C:Temp*”, “C:WindowsTemp*”, “C:swsetup”

#системные пути для очистки

$InProfilesCleanPathsArr = “AppDataLocalTemp*”, “AppDataLocal*.auc”, “AppDataLocalMicrosoftTerminal Server ClientCache*”, “AppDataLocalMicrosoftWindowsTemporary Internet Files*”, “AppDataLocalMicrosoftWindowsWERReportQueue*”, “AppDataLocalMicrosoftWindowsExplorer*”

#пути в профилях для очистки

$Profiles = Get-ChildItem (Get-ItemProperty -path “HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionProfileList”).ProfilesDirectory -Exclude “Администратор”, “Administrator”, “Setup”, “Public”, “All Users”, “Default User”

#извлекли из реестра местоположение профилей, сформировали список

ForEach ($Path in $OtherCleanPathsArr) <

Remove-Item -Path $Path -Recurse -Force -ErrorAction SilentlyContinue -WhatIf

ForEach ($Profile in $Profiles) <

ForEach ($Path in $InProfilesCleanPathsArr) <

Remove-Item -Path $Profile$Path -Recurse -Force -ErrorAction SilentlyContinue -WhatIf

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.