Удаленный сеанс был отключен из за сбоя создания хранилища лицензий с запретом доступа
Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik. В прошлый раз мы с вами успешно устранили ошибку, когда не удавалось сохранить RDP файл. Идем далее и сегодня опять поговорим про удаленное подключение к рабочему столу, обратился ко мне коллега из второй линии вот с такой проблематикой, у сотрудника при попытке подключения в RDP клиенте появлялась ошибка "Удаленный сеанс был отключен из за сбоя создания хранилища лицензий" и все соединение сбрасывалось. Давайте разбираться в чем дело, как это диагностировать и устранить, так как за текущую неделю у меня таких обращений было как минимум три.
Причины появления ошибки с созданием хранилища лицензий
Немного фактурки. Есть RDS ферма построенная на базе Windows Server 2022, в конце апреля 2024 некоторые пользователи стали жаловаться, что при попытке подключения на терминалах на другие сервера по RDP у них появляется ошибка:
После переподключения на другую ноду RDSH, у сотрудника все стало работать. Давайте смотреть, где может быть проблема. Данная ошибка в 99% случаев возникает из-за проблем с ключом реестра по пути:
Ключ реестра MSLicensing отвечает за информацию о лицензировании в операционной системе Windows. Этот ключ используется для хранения данных о лицензиях для удаленного рабочего стола (Remote Desktop) и других служб, требующих лицензирования. В случае проблем с лицензированием удаленного рабочего стола, изменения в ключе реестра MSLicensing могут помочь исправить проблему.
Код ошибки 0x08 обычно говорит, о двух вещах:
- У вас нет ключа MSLicensing, да такое бывает
- На ключе MSLicensing недостаточно прав для его изменения
- Повреждение ключа реестра
Проверка наличия ключа MSLicensing
Самый простой способ проверить наличие нужного ключа реестра, это воспользоваться PowerShell скриптом. Запустите на компьютере, где имеются проблемы с подключением PowerShell ISE в режиме администратора.
if (Test-Path "HKLM:\SOFTWARE\Microsoft\MSLicensing") {
Write-Host "Ключ есть в реестре"
} else {
Write-Host "Ключ отсутствует в реестре"
}
Я не поленился и зашел в regedit через графический интерфейс, чтобы проверить, что там действительно нет данного ключа.
Если нужно массово проверить большой список серверов или компьютеров, то можно воспользоваться вот таким скриптом:
$computers = Get-Content -Path "C:\Temp\RDS\servers.txt"
foreach ($computer in $computers) {
$regKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $computer)
$regSubKey = $regKey.OpenSubKey("SOFTWARE\Microsoft\MSLicensing")
if ($regSubKey -eq $null) {
Write-Output "$computer : False"
} else {
Write-Output "$computer : True"
}
$regKey.Close()
}
На выходе будет таблица вида: имя компьютера и значение True/False.
Что делать если в реестре нет ключа MSLicensing
Если на серверах, где имеется ошибка "Удаленный сеанс был отключен из за сбоя создания хранилища лицензий с запретом доступа" нет ключа MSLicensing, то самым правильным методом будет запуск mstsc от имени пользователя имеющего административные права, а еще лучше с ключом /admin. Запустите окно "Выполнить" и введите:
И подключитесь к любому удаленному серверу, где есть права. Главное, чтобы прошло успешное подключение. В результате данного действия у вас пересоздастся ветка реестра по пути:
Проверка прав на ветку реестра
Код ошибки: 0x10b может появляться если на ключ MSLicensing назначены не верные права. В идеале права должны быть такие:
Вот пример простого PowerShell скрипта для выгрузки ACL списка на ключ реестра.
# Получить список ACL у ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSLicensing
$acl = Get-Acl "HKLM:\SOFTWARE\Microsoft\MSLicensing"
# Вывести список ACL в виде имени участника ACL и его типа прав в таблице
$acl.Access | Format-Table RegistryRights, AccessControlType, IdentityReference
Должно точно быть:
- Администраторы - Полные права - Этот раздел и подразделы
- Пользователи - Чтение - Этот раздел и подразделы
- Система - Полные права - Этот раздел и подразделы
- Все пакеты приложений - Чтение - Этот раздел и подразделы
- Создатель-Владелец - Полные права - Только подразделы
Если права не соответствует данной матрице, то вам нужно через кнопку добавить недостающих участников.
Удаление MSLicensing
Если предыдущие методы не помогли и у вас до этого был ключ MSLicensing, права на нем правильные и не работает, то остается такой метод. как удаление данного ключа MSLicensing, полностью.
После удаления полной ветки HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSLicensing требуется перезагрузить систему. После этого запустив клиента RDP у вас будет полностью пересоздан данный ключ с нужными правами, например мы такое делали в статье "Удаленный сеанс отключен, клиентская лицензия, хранимая на этом компьютере, была изменена".
На этом у меня все. надеюсь. что вам удалось восстановить правильную работу подключения к удаленному рабочему столу, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.