Удаленный рабочий стол службы не работает

Ошибка RDP: Не удается завершить требуемую операцию, службы удаленных рабочих столов заняты

Периодически некоторые пользователи не могут залогиниться на сервера RDS фермы Windows Server через стандартный rdp клиент с ошибкой:

Также несколько раз встречали такую картину: на вкладке Users диспетчера задач RDS хоста имеется множество зависших сессией пользователей с именами (4) вместо username и со статусом Disconnected.

Проблема встречается на всех версиях Windows Server: 2008 R2, 2012 R2, 2016 и 2019.

Ошибка может возникать по разным причинам:

  • Ошибка в работе службы удаленных рабочих столов;
  • Баг с процессом csrss.exe;
  • Проблема с профилем пользователя или со службой profsvc;
  • Нехватка оперативной памяти или дискового пространства на RDSH сервере;
  • Некорректные настройки групповых политик.

К сожалению, на данный момент нет официального решения от Microsoft, которое бы полностью решало проблему, всё сводится к устранению симптомов.

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

#1 — Проверьте ресурсы RDS сервера

Убедитесь, что серверу хватает ресурсов, так как эта ошибка может возникать из-за нехватки оперативной памяти или дискового пространства. Проверьте загруженность оперативной памяти и достаточно ли свободного места на диске, где установлена операционная система (должно быть свободно хотя бы 1 GB). Также проверьте event log на предмет критических ошибок, связанных с RDS.

Если ресурсов хватает, переходим к следующему варианту.

#2 – Сброс сессии пользователя и завершение зависших процессов в RDS сессии

Сначала попробуем найти и принудительно сбросить сессию пользователя, который не может зайти на RDS сервер. В диспетчере задач, на вкладке Users найдите нужного пользователя и через контекстное меню кликаем “Log off”. В большинстве случаев, этого достаточно, но иногда в диспетчере задач вы можете обнаружить множество зависших сессий с именем “(4)” вместо имени пользователя. Как правило в зависшей сессии будет присутствовать 4 процесса:

  • Client Server Runtime Process (csrss.exe)
  • Desktop Windows Manager (dwm.exe)
  • Windows Logon Application (winlogon.exe)
  • Windows Logon User Interface

В первую очередь попробуйте завершить все зависшие сессии с (4) через диспетчер задач, как описано выше. Если это не поможет, то лучше всего перезагрузить сервер, но зачастую такой возможности нет, поэтому пробуем решить проблему без перезагрузки:

  1. Запустите командную строку с правами администратора и введите: query session
    Она покажет всех пользователей и их сессии на терминальном сервере. В выводе команды есть 3 интересующих нас столбца: SESSIONNAME, USERNAME и ID. Найдите пользователя (4) и соответствующий ему ID, в данном примере ID 2. Нам нужно завершить процесс csrss.exe который работает под этой сессией, сначала найдем его.
  2. В командной строке введите: query process /id 2
    Команда выведет все процессы, которые запущены в этой сессии. Нам нужно найти процесс csrss.exe и соответствующий ему PID. В моём случае PID будет 5140. Нам нужно завершить этот процесс.
  3. Сверимся по диспетчеру задач. Откройте диспетчер задач, перейдите на вкладку Details и найдите нужный вам PID и процесс.Если нужный вам PID соответствует процессу csrss.exe, то завершите процесс через контекстное меню и End task, либо через командную строку: taskkill /F /PID 5140

Это нужно проделать с каждым пользователем “(4)”, если их несколько.

#3 — Сброс сессии пользователя через командную строку

Если разлогинить “проблемного” пользователя через диспетчер задач не удалось, можно попробовать сбросить сессию пользователя через командную строку.

    1. Запустите командную строку с правами администратора и введите query session Скопируйте SESSIONNAME проблемного пользователя.
    2. Введите reset session . Вместо впишите нужное вам название сессии, как показано на скриншоте

Это нужно сделать с каждым проблемным пользователем. Теперь можете попробовать залогиниться, проблема должна решиться. Если у вас есть возможность перезагрузить сервер, то лучше сделать это.

#4 – Проверьте настройки лицензирования хоста RDS

Проверьте, что у вас на RDSH хосте указан правильный сервер лицензирования и тип лицензии (CAL Per User/ CAL Per Device).

Адрес сервера с лицензиями RDS можно указать:

      • В настройках RDS коллекции: Tasks -> Edit Deployment Properties -> RD Licensing;
      • Через GPO: Use the specified Remote Desktop license servers (Computer Configuration -> Policies -> Admin Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host -> Licensing)
      • С помощью PowerShell (см. статью “Не задан режим лицензирования для сервера узла сеансов удаленных рабочих столов”).

#5 – Уберите лимит RDP подключений в GPO

Через групповые политики можно ограничить количество одновременных подключений по RDS. По умолчанию данная политика выключена.

С помошью gpresult нужно проверить, включена ли политика и какое в ней указано значение.

      1. Запустите командную строку с правами администратора и введите gpresult /H c:\gpresult.html
      2. Откройте файл gpresult.html, который лежит в корне диска C. Это обычный .html файл, рекомендуется открывать через internet explorer, так как в других браузерах он может отображаться некорректно;
      3. В разделе Computer Configuration -> Administrative Templates -> Windows Components -> Remote Desktop Services -> Remote Desktop Session Host\Connections найдите Limit number of connections, либо в поиске по странице наберите Limit number of connections.

Если такой политики нет, значит она не применяется и ограничений по количеству одновременных подключений нет. Если политика есть и указано количество одновременных подключений, измените её значение на нужное вам число. Изменить групповую политику можно через оснастку gpedit.msc, если политика настроена через доменные GPO, отредактируйте соответствующую политику через gpmc.msc. После того как отредактируете политику, не забудьте набрать в командной строке gpupdate /force для немедленного применения политики.

#6 — Нестандартные решения: если ничего не помогает

Если ресурсов у вас хватает, ошибок в журнале нет, перезагружаться нельзя, а сброс сессии по каким-то причинам не помог, то следует попробовать следующие варианты:

    • Проверьте, что на RDS сервере не включен Drain режим, который запрещает пользователям новые RDP подключения: chglogon.exe /QUERY . Если команда вернет сообщение “New user logons are DISABLED, but reconnections to existing sessions are ENABLED”, отключите Drain режим: chglogon.exe /enable
    • В настройках RDP подключения (mstsc.exe) на клиенте mstsc снимите галку «Постоянное кэширование точечных рисунков» («Persistent bitmap caching»);
    • Перезагрузите службу RDS. В командной строке с правами администратора наберите net stop termservice и net start termservice . Либо перезапустите службу удаленно с помощью PowerShell: Get-Service termservice –ComputerName msk-rds1 | Restart-Service
    • Принудительно убейте процессы tstheme.exe;
    • Рекомендуется применить все последние обновления для вашей версии Windows, воспользуйтесь стандартными средствами обновления.

Источник

Удаленный рабочий стол службы не работает

Для доступа к настройкам удаленного рабочего стола, нужно зайти в «Меню пуск» или «Проводник Windows» (т.е. в любую открытую папку), нажать правой кнопкой мыши на «Компьютер» и выбрать «Свойства«, слева в открывшемся окне выбрать «Настройка удаленного доступа«, нажать на вкладку «Удаленный доступ» и выбрать нужную позицию. Нажать кнопки «Применить» и «ОК«.

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

то необходимо очистить кэш клиентской лицензии. Для этого необходимо зайти в «Редактор реестра«. Для входа в него нужно нажать комбинацию клавиш Windows + R, ввести в строку «Открыть«, команду regedit и нажать «ОК«. Раскрыть в реестре ветку HKEY_LOCAL_MACHINE \SOFTWARE \ Microsoft. Найти и удалить полностью раздел MSLicensing. При следующем подключении клиента к серверу будет получена новая лицензия и удаленный рабочий стол снова будет доступен.

Для повышения сетевой безопасности и сокращения чужих попыток подключения к удаленному рабочему столу, можно на удаленном компьютере сменить стандартный порт TCP 3389, на другой , например — 5478 (также не забыть настроить переадресацию в роутере).
Для того чтобы сменить порт, необходимо зайти в «Редактор реестра» (Вход в редактор описан выше, в п. 5) и раскрыть ветку HKEY_LOCAL_MACHINE \System \CurrentControlSet \Control \TerminalServer \WinStations \RDP-Tcp, справа открыть двумя кликами мыши параметр PortNumber,

в открывшемся окне поменять радиоточку в системе исчисления на «Десятичная» и изменить значение стандартного порта — 3389 на новое. В нашем случае — 5478. После нажать «ОК«.

После изменения порта, необходимо в «Брандмауэре Windows» этот порт — 5478, открыть. Для этого нажать комбинацию клавиш Windows + R, далее ввести в строку «Открыть«, команду firewall.cpl и нажать «ОК«. Откроется окно настроек «Брандмауэр Windows«. Слева нажать на строку «Дополнительные параметры«.

Далее, нажать правой кнопкой мыши на «Правила для входящих подключений«

и в появившемся меню нажать на «Создать правило. «.

В окне «Тип правила» поставить радиоточку в позиции «Для порта» и нажать «Далее«.

В следующем окне «Протокол и порты«, напротив позиции «Определенные локальные порты:«, в поле ввести номер порта который менялся в параметре «PortNumber«. В нашем случае — 5478. Нажать кнопку «Далее«.

В следующем окне «Действие«, оставить всё без изменения и нажать на кнопку «Далее«.

В окне «Профиль«, также нажать на кнопку «Далее«.

В следующем окне «Имя«, указать любое имя для правила, например RDP-5478 и нажать на кнопку «Готово«.

Правило создано.

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

Чтобы войти в этот компьютер, необходимо на клиентском компьютере запустить «Подключение к удаленному рабочему столу» и ввести в поле «Компьютер:» адрес, но уже с указанием порта после двоеточия. Например локальный адрес удаленного компьютер пусть будет 192.168.1.88, а порт на который меняли — 5478. Выглядеть будет так — 192.168.1.88:5478. Если подключение будет осуществляться через сеть интернет, тогда необходимо поменять локальный IP адрес на нужный глобальный, до двоеточия, порт 5478 останется без изменения.

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

. Измененный адрес порта не работает на Windows XP и более ранних ОС.

Источник

Читайте также:  Пгу не работает причины
Оцените статью