Ошибка 0xC004F038 при активации Windows, решаем за минуту

error 0xC004F038

Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете по практическому системному администрированию Pyatilistnik.org. В прошлый раз мы с вами рассматривали, за что отвечает 443 порт и как его открыть в системе. Сегодня я хочу в очередной раз затронуть тему активации Windows в домене Active Directory и разберу ошибку 0xC004F038, которую вы как администратор можете легко встретить в своей практике.

❌Описание ошибки активации 0xC004F038

Когда вы устанавливаете в сети Active Directory, новый KMS сервер и пытаетесь с его помощью произвести активацию клиентской или серверной ОС, вы по началу можете столкнуться с ошибкой 0xC004F038, при выполнении команды:

slmgr /ato

Ошибка 0xC004F038. Служба лицензирования программного обеспечения сообщила, что для данного компьютера не удалось выполнить активацию. Значение счетчика, которое сообщила служба управления ключами (KMS), недостаточно. (0xc004f038:  The Software Licensing Service reported that the computer could not be activated. The count reported by your Key Management Service (KMS) is insufficient. Please contact your system administrator.)

Давайте разбираться, что это за счетчик активаций.

Значение счетчика, которое сообщила служба управления ключами (KMS), недостаточно

⚙️Как посмотреть значение счетчика активации на KMS

У службы KMS есть такое значение "Current Count (Текущее количество)", этот то минимальное обращение от определенных операционных систем, после которого служба управления ключами будет активировать системы. Значения "Current Count" всегда будет в диапазоне от 0 до 50, и он является накопительным. Его суть в том, чтобы показать вам сколько попыток активации было предпринято в течении 30 дней.

Логично предположить, что если у вас новый KMS сервер, то данный счетчик будет с небольшим значением. У Microsoft есть политика подсчета лицензий, чтобы KMS сервер стал активировать.

👀Читайте так же: Ошибка активации 0xC004F074 и 0xC004F034

Политика максимального числа лицензий на сегодняшний день задается клиентской ОС Windows, и для активации узла KMS требуется не менее 25 клиентов. Таким образом, максимальное число клиентов на узле KMS составляет 2x25, то есть 50. Обратите внимание на то, что в средах, содержащих только клиенты KMS для Windows Server, максимальное число клиентов на узле KMS составит 10. Это обусловлено тем, что порог для выпусков Windows Server равен 5 (а 2x5 равно 10).

Чтобы посмотреть текущее значение счетчика "Current Count" выполните команду:

slmgr /dli

В моем примере это пока единица, поэтому моя система с Windows Server пока и отдает ошибку 0xC004F038 и говорит, ждите.

посмотреть текущее значение счетчика "Current Count"

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

slmgr /ato

slmgr /ato

Если снова проверить значение счетчика, то оно стало уже 5, что достаточно для активации Windows Server.

Набранное значение счетчика активации

Как накрутить счетчик на KMS сервере

В чем смысл накрутки счетчика KMS. Напомню, что активация клиента на KMS сервере осуществляется на 180 дней, и каждые 7 дней он пытается продлить активацию, до тех 180 дней. Данная настройка менялась командой:

slmgr.vbs /sri 21

Данная команда делается только на активном KMS сервере, на клиенте вы будите получать вот такое окно.

slmgr.vbs /sri

Если за 180 дней клиент не смог связаться с KMS сервером, то его запись активации удаляется из базы данных сервера KMS. Данная запись называется CMID клиента, после ее удаления счетчик активаций уменьшается. На клиенте вы в итоге увидите grace period.

Причины мешающие увеличить счетчик активаций

  • 1️⃣Не правильно указанный KMS сервер на клиенте, я ранее приводил в другой статье, что активация не проходила, из-за обращения к другому KMS серверу назначенному через групповые политики
  • 2️⃣Закрыт порт 1688
  • 3️⃣Не найдена DNS запись _vlmcs._tcp, или она скрыта и вручную не назначен KMS
  • 4️⃣На клиентской ОС настроен не правильный GVLK ключ
  • 5️⃣На клиенте может быть настроен не тот канал активации, вместо Volume настроен Retail
  • 6️⃣Одинаковый CMID после клонирования системы без применения sysprep

Раньше был скрипт для Windows 7 и Windows Server 2008 R2, и там можно было легко накрутить. Суть его была в том, чтобы удалять в папке Windows два файла отвечающих за активацию. На диске C:\ создайте папку temp, в ней создайте два файла без расширений с такими именами:

  • 7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0
  • 7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0

Увеличение счетчика активации KMS

данные файла будут пере затирать оригиналы расположенные по пути "%systemroot%\system32\".

1️⃣В set skms задайте DNS имя вашего KMS сервера

2️⃣В for %%i in нужное количество точек, будет соответствовать нужному числу попыток активации

3️⃣В /ipk не забывайте устанавливать правильный ключ от вашей редакции

Данный скрипт запускается только на клиенте, если запустите на KMS сервере, то сломаете его и придется его пере активировать (допустимо всего 6 попыток активации одного VLC ключа)

@echo off
set skms=dc02.root.pyatilistnik.org
for %%i in (. . . . . . . . . . . . . . . . . . . . . . . . . .) do call :Act %skms%
slmgr /ato
sc stop sppsvc
goto :end
:Act
sc stop sppsvc
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-0.C7483456-A289-439d-8115-601632D005A0" "%systemroot%\system32\*" /H /R /K /Y
xcopy "7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0" "%systemroot%\system32\*" /H /R /K /Y
sc start sppsvc
cscript.exe "%systemroot%\system32\slmgr.vbs" /skms %1
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato
sc stop sppsvc
:end

Чтобы накрутить счетчик на Windows 10/11 и Windows Server 2016/2022 вам нужно создать виртуальную машину с данной системой и воспользоваться механизмом снапшотов. Вам потребуется два скрипта:

  • Первый будет производить смену CMID через процедуру реарма
  • Второй будит задавать нужный KMS сервер и указывать нужный GVLK ключ

Скрипт с реармом.

start "cmd /c slmgr /rearm" timeout /t 10 /nobreak > NUL
wmic computersystem where name="%COMPUTERNAME%" call rename name="pc-%random%"
shutdown /r /t 0

Скрипт с пере активацией. Не забываем подложить свой ключ GVLK и изменить сервер.

set skms= dc02.root.pyatilistnik.org
sc start sppsvc
script.exe "%systemroot%\system32\slmgr.vbs" /skms %1
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk N69G4-B89J2-4G8F4-WWYCC-J464C
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato

Порядок такой:

    1. Создайте снапшот виртуальной машины
    2. Далее запустите скрипт с реармом в режиме администратора
    3. После перезагрузки запустите в режиме администратора скрипт по активации
    4. Откатите снапшот и выполните все заново без создания снапшота только.

Из полезных команд еще могу отнести просмотр текущего CMID:

Get-WmiObject -class SoftwareLicensingService -ComputerName localhost | Select-object ClientMachineID

Если у вас есть другие методы, то просьба ими поделиться, главное без вирусного ПО. С вами был Иван Сёмин .автор и создатель IT портала Pyatilistnik.org.

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

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

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