Ошибка 0xC004F038 при активации Windows, решаем за минуту
Добрый день! Уважаемые читатели и гости одного из крупнейших IT блогов в рунете по практическому системному администрированию Pyatilistnik.org. В прошлый раз мы с вами рассматривали, за что отвечает 443 порт и как его открыть в системе. Сегодня я хочу в очередной раз затронуть тему активации Windows в домене Active Directory и разберу ошибку 0xC004F038, которую вы как администратор можете легко встретить в своей практике.
❌Описание ошибки активации 0xC004F038
Когда вы устанавливаете в сети Active Directory, новый KMS сервер и пытаетесь с его помощью произвести активацию клиентской или серверной ОС, вы по началу можете столкнуться с ошибкой 0xC004F038, при выполнении команды:
Давайте разбираться, что это за счетчик активаций.
⚙️Как посмотреть значение счетчика активации на KMS
У службы KMS есть такое значение "Current Count (Текущее количество)", этот то минимальное обращение от определенных операционных систем, после которого служба управления ключами будет активировать системы. Значения "Current Count" всегда будет в диапазоне от 0 до 50, и он является накопительным. Его суть в том, чтобы показать вам сколько попыток активации было предпринято в течении 30 дней.
Логично предположить, что если у вас новый KMS сервер, то данный счетчик будет с небольшим значением. У Microsoft есть политика подсчета лицензий, чтобы KMS сервер стал активировать.
Политика максимального числа лицензий на сегодняшний день задается клиентской ОС Windows, и для активации узла KMS требуется не менее 25 клиентов. Таким образом, максимальное число клиентов на узле KMS составляет 2x25, то есть 50. Обратите внимание на то, что в средах, содержащих только клиенты KMS для Windows Server, максимальное число клиентов на узле KMS составит 10. Это обусловлено тем, что порог для выпусков Windows Server равен 5 (а 2x5 равно 10).
Чтобы посмотреть текущее значение счетчика "Current Count" выполните команду:
В моем примере это пока единица, поэтому моя система с Windows Server пока и отдает ошибку 0xC004F038 и говорит, ждите.
Тут вам либо нужно дождаться, когда вы наберете нужное значение автоматически, или же можете использовать скрипт накрутки. Как только счетчик достиг порогового значения, при попытке активации вы увидите победное окно.
Если снова проверить значение счетчика, то оно стало уже 5, что достаточно для активации Windows Server.
Как накрутить счетчик на KMS сервере
В чем смысл накрутки счетчика KMS. Напомню, что активация клиента на KMS сервере осуществляется на 180 дней, и каждые 7 дней он пытается продлить активацию, до тех 180 дней. Данная настройка менялась командой:
Данная команда делается только на активном KMS сервере, на клиенте вы будите получать вот такое окно.
Если за 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
данные файла будут пере затирать оригиналы расположенные по пути "%systemroot%\system32\".
2️⃣В for %%i in нужное количество точек, будет соответствовать нужному числу попыток активации
3️⃣В /ipk не забывайте устанавливать правильный ключ от вашей редакции
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 ключ
Скрипт с реармом.
wmic computersystem where name="%COMPUTERNAME%" call rename name="pc-%random%"
shutdown /r /t 0
Скрипт с пере активацией. Не забываем подложить свой ключ GVLK и изменить сервер.
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
Порядок такой:
- Создайте снапшот виртуальной машины
- Далее запустите скрипт с реармом в режиме администратора
- После перезагрузки запустите в режиме администратора скрипт по активации
- Откатите снапшот и выполните все заново без создания снапшота только.
Из полезных команд еще могу отнести просмотр текущего CMID:
Если у вас есть другие методы, то просьба ими поделиться, главное без вирусного ПО. С вами был Иван Сёмин .автор и создатель IT портала Pyatilistnik.org.