RDP Произошла внутренняя ошибка 0x4 kb5094128

Как временное решение помогло удаление обновления KB5094128 и полное удаление КриптоПро.
После этого была установлена последняя версия КриптоПро, и по новой установлены обновления. 
Если проблема вернулась пробуем пересоздание сертификата RDP.
В PowerShell, запущенном от имени администратора, последовательно выполняем следующие команды:

Stop-Service termservice -Force

Rename-Item "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" "MachineKeys_bak"

Remove-Item "HKLM:\SOFTWARE\Microsoft\SystemCertificates\Remote Desktop" -Recurse -Force

Remove-Item "Cert:\LocalMachine\Remote Desktop" -Recurse -Force -ErrorAction SilentlyContinue

$cert = New-SelfSignedCertificate `
    -DnsName $env:COMPUTERNAME `
    -CertStoreLocation "Cert:\LocalMachine\My" `
    -KeyUsage DigitalSignature,KeyEncipherment `
    -KeyAlgorithm RSA `
    -KeyLength 2048 `
    -HashAlgorithm SHA256 `
    -NotAfter (Get-Date).AddYears(2)

$thumbprint = $cert.Thumbprint
Write-Host "Thumbprint: $thumbprint"

$path = (Get-WmiObject `
    -Class Win32_TSGeneralSetting `
    -Namespace root\cimv2\TerminalServices `
    -Filter "TerminalName='RDP-tcp'").__PATH

Set-WmiInstance -Path $path -Argument @{ SSLCertificateSHA1Hash = $thumbprint }

Start-Service termservice

# Восстановление сертификата RDP без переустановки роли RDS

Если RDP перестал принимать подключения, появляются ошибки аутентификации или проблемы с SSL, можно попробовать пересоздать сертификат удалённого рабочего стола. Данная процедура не затрагивает лицензии RDS и обычно выполняется безопаснее, чем пересоздание базы лицензирования.

## 1. Остановить службу удалённых рабочих столов

Запустите PowerShell от имени администратора и выполните:

```powershell
Stop-Service termservice -Force
```

## 2. Сбросить хранилище RSA-ключей

Переименуйте каталог с ключами:

```powershell
Rename-Item "C:\ProgramData\Microsoft\Crypto\RSA\MachineKeys" "MachineKeys_bak"
```

Это позволит при необходимости вернуть всё обратно.

## 3. Удалить старый сертификат RDP

```powershell
Remove-Item "HKLM:\SOFTWARE\Microsoft\SystemCertificates\Remote Desktop" -Recurse -Force

Remove-Item "Cert:\LocalMachine\Remote Desktop" -Recurse -Force -ErrorAction SilentlyContinue
```

## 4. Запустить службу RDP

```powershell
Start-Service termservice
```

После запуска Windows обычно автоматически создаёт новый сертификат.

Проверить состояние службы можно командой:

```powershell
Get-Service termservice
```

## 5. Если сертификат не создался автоматически

Создайте новый самоподписанный сертификат:

```powershell
$cert = New-SelfSignedCertificate `
-DnsName $env:COMPUTERNAME `
-CertStoreLocation "Cert:\LocalMachine\My" `
-KeyUsage DigitalSignature,KeyEncipherment `
-KeyAlgorithm RSA `
-KeyLength 2048 `
-HashAlgorithm SHA256 `
-NotAfter (Get-Date).AddYears(2)

$thumbprint = $cert.Thumbprint
```

Назначьте его службе RDP:

```powershell
$path = (Get-WmiObject `
-Class Win32_TSGeneralSetting `
-Namespace root\cimv2\TerminalServices `
-Filter "TerminalName='RDP-tcp'").__PATH

Set-WmiInstance -Path $path -Argument @{ SSLCertificateSHA1Hash = $thumbprint }
```

После этого перезапустите службу:

```powershell
Restart-Service termservice
```

## Важные замечания

* Все команды необходимо выполнять от имени администратора.
* После пересоздания сертификата клиент может показать предупреждение о новом сертификате — это нормальное поведение.
* Если сервер входит в домен, сертификат можно распространить через групповые политики.
* Лицензии RDS и база лицензирования при данной процедуре не затрагиваются.
* Если проблема возникла после установки КриптоПро или очередных обновлений Windows, рекомендуется временно удалить КриптоПро и проверить работу RDP до выполнения более сложных процедур.

#kb5094128 #ошибка0x4 #0x4 rdp