Удаленный сеанс был отключен из за сбоя создания хранилища лицензий с запретом доступа

Обновлено 08.05.2024

rdp logo

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik. В прошлый раз мы с вами успешно устранили ошибку, когда не удавалось сохранить RDP файл. Идем далее и сегодня опять поговорим про удаленное подключение к рабочему столу, обратился ко мне коллега из второй линии вот с такой проблематикой, у сотрудника при попытке подключения в RDP клиенте появлялась ошибка "Удаленный сеанс был отключен из за сбоя создания хранилища лицензий" и все соединение сбрасывалось. Давайте разбираться в чем дело, как это диагностировать и устранить, так как за текущую неделю у меня таких обращений было как минимум три.

Причины появления ошибки с созданием хранилища лицензий

Немного фактурки. Есть RDS ферма построенная на базе Windows Server 2022, в конце апреля 2024 некоторые пользователи стали жаловаться, что при попытке подключения на терминалах на другие сервера по RDP у них появляется ошибка:

Удаленный сеанс был отключен из за сбоя создания хранилища лицензий с запретом доступа. Запустите клиент удаленного рабочего стола с повышенными привилегиями. Код ошибки: 0x08. Расширенный код ошибки: 0x10b

Удаленный сеанс был отключен из за сбоя создания хранилища лицензий с запретом доступа. Запустите клиент удаленного рабочего стола с повышенными привилегиями. Код ошибки: 0x08. Расширенный код ошибки: 0x10b

После переподключения на другую ноду RDSH, у сотрудника все стало работать. Давайте смотреть, где может быть проблема. Данная ошибка в 99% случаев возникает из-за проблем с ключом реестра по пути:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing

Ключ реестра MSLicensing отвечает за информацию о лицензировании в операционной системе Windows. Этот ключ используется для хранения данных о лицензиях для удаленного рабочего стола (Remote Desktop) и других служб, требующих лицензирования. В случае проблем с лицензированием удаленного рабочего стола, изменения в ключе реестра MSLicensing могут помочь исправить проблему.

Код ошибки 0x08 обычно говорит, о двух вещах:

  1. У вас нет ключа MSLicensing, да такое бывает
  2. На ключе MSLicensing недостаточно прав для его изменения
  3. Повреждение ключа реестра

Проверка наличия ключа MSLicensing

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

# Проверяем наличие ключа реестра HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSLicensing
if (Test-Path "HKLM:\SOFTWARE\Microsoft\MSLicensing") {
Write-Host "Ключ есть в реестре"
} else {
Write-Host "Ключ отсутствует в реестре"
}

Проверка наличия ключа MSLicensing

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

Отсутствие MSLicensing в реестре

Если нужно массово проверить большой список серверов или компьютеров, то можно воспользоваться вот таким скриптом:

$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

Если на серверах, где имеется ошибка "Удаленный сеанс был отключен из за сбоя создания хранилища лицензий с запретом доступа" нет ключа MSLicensing, то самым правильным методом будет запуск mstsc от имени пользователя имеющего административные права, а еще лучше с ключом /admin. Запустите окно "Выполнить" и введите:

И подключитесь к любому удаленному серверу, где есть права. Главное, чтобы прошло успешное подключение. В результате данного действия у вас пересоздастся ветка реестра по пути:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSLicensing

Проверка прав на ветку реестра

Код ошибки: 0x10b может появляться если на ключ MSLicensing назначены не верные права. В идеале права должны быть такие:

Состав ACL на ключ 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

пример PowerShell скрипта для выгрузки ACL списка на ключ реестра

Должно точно быть:

  • Администраторы - Полные права - Этот раздел и подразделы
  • Пользователи - Чтение - Этот раздел и подразделы
  • Система - Полные права - Этот раздел и подразделы
  • Все пакеты приложений - Чтение - Этот раздел и подразделы
  • Создатель-Владелец - Полные права - Только подразделы

Если права не соответствует данной матрице, то вам нужно через кнопку добавить недостающих участников.

Удаление MSLicensing

Если предыдущие методы не помогли и у вас до этого был ключ MSLicensing, права на нем правильные и не работает, то остается такой метод. как удаление данного ключа MSLicensing, полностью.

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

После удаления полной ветки HKEY_LOCAL_MACHINE\SOFTWARE \Microsoft\MSLicensing требуется перезагрузить систему. После этого запустив клиента RDP у вас будет полностью пересоздан данный ключ с нужными правами, например мы такое делали в статье "Удаленный сеанс отключен, клиентская лицензия, хранимая на этом компьютере, была изменена".

Удаление MSLicensing

На этом у меня все. надеюсь. что вам удалось восстановить правильную работу подключения к удаленному рабочему столу, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *