В этой статье мы рассмотрим, как решить проблему с ошибкой «Службы удаленных рабочих столов сейчас заняты» при подключении к RDS (Remote Desktop Services) серверам на базе Windows Server через RDP. Пользователи периодически сталкиваются с этой проблемой, когда не могут войти на серверы RDS, а на экране появляется сообщение: «Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас заняты». Мы рассмотрим причины этой ошибки, такие как зависшие сессии, проблемы с профилями пользователей, нехватка ресурсов или некорректные настройки, и предложим решения, начиная от простых шагов по завершению сессий до более сложных изменений в настройках групповых политик.
Ошибка: «Службы удаленных рабочих столов сейчас заняты»
Ошибка при подключении через RDP выглядит следующим образом:
«Не удается завершить требуемую операцию, поскольку службы удаленных рабочих столов сейчас заняты. Повторите попытку через несколько минут. Другие пользователи должны по-прежнему иметь возможность входа».
The task you are trying to do can’t be completed because Remote Desktop Services is currently busy. Please try again in a few minutes. Other users should still be able to log on.
Убедитесь, что серверу хватает ресурсов. Проблема может быть вызвана нехваткой оперативной памяти или места на диске, особенно на том, где установлена операционная система. Убедитесь, что у вас как минимум 1 ГБ свободного места на системном разделе. Также стоит проверить, не заполняются ли профили пользователей старыми или ненужными файлами, и при необходимости очистить их.
Для проверки ресурсов воспользуйтесь Диспетчером задач или командлетами PowerShell для мониторинга производительности. Если ресурсов хватает, переходите к следующим шагам.
Зависшие сессии пользователей могут быть причиной проблемы. Часто это связано с тем, что пользователь не завершил предыдущие сессии, и они остаются в состоянии «Disconnected». Для решения попробуйте завершить сессию пользователя через Диспетчер задач на вкладке Пользователи.
1. Найдите нужного пользователя, щелкните правой кнопкой мыши по его имени и выберите Log off (Завершить сеанс).
2. Если вы видите сессии с именем «(4)» вместо имени пользователя, попробуйте завершить все зависшие процессы, такие как:
— Client Server Runtime Process (csrss.exe)
— Desktop Windows Manager (dwm.exe)
— Windows Logon Application (winlogon.exe)
Завершите эти процессы вручную, чтобы завершить зависшие сессии.
Команды для сброса сессии через командную строку:
1. Запустите командную строку с правами администратора и введите query session
для вывода списка сессий.
2. Найдите сессию пользователя и ее ID.
3. Завершите процесс с помощью команды:
query process /id {SessionID}
4. Завершите процесс csrss.exe по его PID:
taskkill /F /PID {PID}
Если завершить сессию через Диспетчер задач не удается, попробуйте сбросить ее с помощью командной строки.
1. Выведите список сессий с помощью команды query session
.
2. Завершите сессию пользователя:
reset session {SessionID}
Команда выведем список всех пользователей и их сессии на терминальном сервере. В выводе команды есть 3 интересующих нас столбца: SESSIONNAME, USERNAME и ID. Найдите пользователя (4) и соответствующий ему ID, в данном примере ID 2. Вам нужно завершить процесс csrss.exe, который работает в этой сессии;
3. Выполните команду:
query process /id 2
Команда выведет все процессы, которые запущены в сессии с указанным ID. Нам нужно найти PID процесса csrss.exe. В моём случае это PID 5140. Нам нужно завершить этот процесс
4. Завершите процесс csrss.exe по его PID:
taskkill /F /PID 5140
После завершения процесса csrss.exe, все другие процессы в сессии пользователя будут завершены автоматически. Это позволит завершить зависшие сессии без перезагрузки сервера.
Таким образом нужно завершить все сессии для пользователем “(4)”, если их несколько.
Если необходимо сбросить сессию удаленно:
1. Введите команду qwinsta /server:{ServerName}
для вывода списка сессий на удаленном сервере.
2. Завершите сессию с помощью команды reset session {SessionID} /server:{ServerName}
.
Если завершить сессию “проблемного” пользователя не удалось, можно попробовать сбросить сессию пользователя через командную строку.
Выведите список сессий: query session
Завершите сессию пользователя по его SESSIONNAME или ID. Например:
reset session rdp-tcp#16
или
reset session 3
Убедитесь, что правильно настроен сервер лицензирования для вашего хоста RDS. Проблема может возникнуть, если на сервере не указан сервер лицензирования или не настроен тип лицензии (CAL Per User/Device).
1. Проверьте настройки лицензирования через консоль RDS: Tasks -> Edit Deployment Properties -> RD Licensing.
2. Либо используйте GPO: Use the specified Remote Desktop license servers.
Проверьте, не ограничено ли количество подключений через GPO. Используйте команду gpresult /H c:\gpresult.html
для проверки политик. Если в разделе Computer Configuration > Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host\Connections политика Limit number of connections активирована, измените или отключите ее.
Если ни одно из решений не помогло, можно попробовать следующие варианты:
1. Проверьте, не включен ли режим обслуживания RDS (Drain Mode). Выполните команду:
chglogon.exe /QUERY
Если режим включен, отключите его командой:
chglogon.exe /enable
2. Отключите опцию Постоянное кэширование точечных рисунков в настройках RDP клиента.
3. Перезапустите службу RDS:
net stop termservice
net start termservice
4. Принудительно завершите процесс tstheme.exe.
5. Установите все последние обновления для вашей версии Windows.
6. В Windows Server 2012 R2 в Event Viewer может появится событие Event ID 20499 “Remote Desktop Services has taken too long to load the user configuration from server..”.
Для исправления проблемы добавьте в реестр параметр fQueryUserConfigFromLocalMachine:
REG ADD "HKLM\SYSTEM\CurrentControlSet\control\Terminal Server\Winstations\RDP-Tcp" /v fQueryUserConfigFromLocalMachine /t REG_DWORD /d 1 /f
REG ADD "HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services" /v fQueryUserConfigFromLocalMachine /t REG_DWORD /d 1 /f
7. Если на Windows хосте установлен Citrix и на Server VDA много сессий со статусом disconnected, попробуйте создать параметр реестра SeTokenDoesNotTrackSessionObject:
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Kernel" /v SeTokenDoesNotTrackSessionObject /t REG_DWORD /d 1 /f
8. Проверьте логи профилей пользователей (служба profsvc), особенно если используется User Profile Disks или FSLogix.
9. Также при использовании профилей User Profile Disks (UPD) на Windows Server 2019/2016 необходимо создать параметр реестра DeleteUserAppContainersOnLogoff
, чтобы исправить проблемы, связанные с множеством правил Windows Defender Firewall, которые создаются для UWP приложений Windows Store при каждом входе пользователя.
Для этого выполните следующую команду в командной строке с правами администратора:
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\History" /v DeleteUserAppContainersOnLogoff /t REG_DWORD /d 1 /f
Это позволит автоматически удалять контейнеры приложений пользователей при выходе, что предотвратит накопление избыточных правил и улучшит производительность.
Если указанные шаги не помогли, рекомендуется обратиться к системному администратору для дальнейшего анализа проблемы и использования специализированных средств диагностики.