Если вы активно используете удаленные подключения к рабочим станциям, Windows серверам, RDS фермерам через протокол RDP, скорее всего вы не раз сталкивались, что в некоторых случаях не работает буфер обмена в терминальной сессии. В результате вы не можете передать (скопировать/вставить) текст или файлы между вашим компьютером и удаленным рабочим столом. Проблема встречается как в Windows Server, так и в десктопных версиях Windows.
Возможны два сценария:
-
на удаленном сервере запрещено копировать файлы/данные через RDP,
-
или в текущей сессии пользователя произошел сбой процесса rdpclip.exe.
Не работают функции копировать/вставить в буфере обмена RDP сессии (rdpclip.exe)
Если буфер обмена в конкретной RDP сессии перестал работать неожиданно, а пункт Paste в контекстном меню удаленного компьютера стал неактивным, проще всего корректно завершить текущую RDP сессию (logoff) и подключиться заново. Это наверняка исправит проблему с буфером обмена. Однако это не всегда удобно, потому что приходится заново запускать все приложения в RDP сессии. К счастью, есть способ восстановить работу буфера обмена в RDP сессии без выполнения logoff.
За работу буфера обмена между вашим компьютером и удаленной RDP отвечает приложение rdpclip.exe. Для каждого удаленного пользователя при подключении к Remote Desktop для стартует собственный процесс rdpclip.exe
. С помощью Task Manager вы можете завершить процесс rdpclip.exe (RDP Clipboard Monitor/ Монитор буфера обмена RDP) и запустить его вручную (Task Manager -> File -> Start new task -> rdpclip
-> Enter).
Это обычно помогает быстро восстановить работу удаленного буфера обмена. Проверьте, работает ли теперь copy/paste (Ctrl+C / Ctrl+V) в RDP окне.
Пользователи могут самостоятельно перезапускать зависший процесс rdpclip.exe с помощью простого PowerShell скрипта. Достаточно поместить PS1 файл на рабочий стол общего профиля Public или скопировать пользователям на столы через GPO.
(Get-WmiObject -Query "select * from Win32_Process where name='RDPClip.exe'"|?{$_.GetOwner().User -eq $ENV:USERNAME}).Terminate()
rdpclip.exe
Для удобства можно подписать этот PowerShell скрипт или настроить политику PowerShell Execution Policy.
Также не забывайте, что успешного копирования данных через RDP буфер обмена должны быть выполнены следующие условия:
1. В настройках RDP клиента, который вы используете для подключения к удаленному компьютеру должна быть разрешена опция Clipboard/Буфер обмена. В стандартном mstsc.exe включите на вкладке Local Resources в секции Choose the devices and resources that you want to use in your remote session опцию Clipboard
Если вы используете другой RDP клиент, например Remote Desktop Connection Manager или mRemoteNG, имейте в виду что опция удаленного буфера обмена может называться по-другому.
2. На удаленном RDP/RDS хосте должно быть разрешено передавать данные через буфер обмена (об этом ниже).
Как запретить/разрешить копирование через буфер обмена RDP в Windows?
С помощью параметров групповых политик или реестра вы можете разрешить или запретить использование RDP буфера обмена на хосте Windows для операций копировать/вставить.
- Запустите локальный редактор групповых политик –
gpedit.msc
; - Перейдите в секцию GPO Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Device and Resource Redirection;
- Чтобы запретить копировать данные с/на удаленный сервер через буфер обмена RDP сессии установите Enabled для следующих политик:
- Do not allow Clipboard redirection (Clipboard redirection используется для копирования текста и файлов через буфер обмена в RDP);
- Do not allow drive redirection (Drive mapping/redirection –позволяет пользователю получать доступ к своим локальным дискам в RDP сесии. Используется в том числе при копировании файлов).
Аналогичные политики есть в пользовательском разделе GPO. Это значит, что вы можете отключить буфер обмен и подключаемые диски только для определенных пользователей RDP хоста. На отдельно-стоящем компьютере для отключения буфера обмена RDP для не-администраторов, можно использовать MLGPO.
Вы можете отключить RDP буфер для всех пользователей сервера через реестр. Рассмотренным выше политикам соответствуют следующие REG_DWORD параметры в ветке реестра HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server:
Можно запретить копирование данных между компьютером и удаленным RDP хостом так:
reg add “HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server” / v “DisableClipboardRedirection” / t REG_DWORD / d 1 / f
reg add “HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server” / v “DisableDriveRedirection” / t REG_DWORD / d 1 / f
Если у вас используются RDS сервера, можно отключить буфер обмена и локальные диски в настройках коллекции: Remote Desktop Services -> Collections -> Tasks -> Edit Properties -> Client Settings. Снимите галки у опций “Clipboard” и “Drive” в секции Enable redirecting for the following.
Если вы хотите запретить копировать из терминальной RDP сессии только для пользователей, но не для администраторов, можно изменить NTFS разрешения на файлc:\windows\system32\rdpclip.exe. необходимо в свойствах файл убрать разрешение Read/Execute для встроенной группы Users (придется сначала изменить владельца файла с TrustedInstaller).