На страницах нашего сайта мы уже не раз касались особенностей установки, настройки и функционирования службы управления ключами Microsoft KMS (Key Management Service). Сегодня мы рассмотрим понятие счетчика активации на KMS сервере, особенности учета количества активаций клиентов на сервере активации, способы принудительной накрутки счетчика количества активаций и зачем это вообще все это нужно.
Принципы функционирования KMS
Еще раз вернемся к теоретическим основам функционирования службы KMS.
Совет. Предварительно рекомендуем познакомиться со следующими статьями на нашем сайте:
- Установка KMS сервера на Windows Server 2012 R2
- Активация ОС Windows с помощью KMS (KMS активация Windows 8.1, 2012 R2)
- ADBA активация, KMS активация MS Office 2013, 2010
Согласно корпоративной программе лицензирования Microsoft (Volume License) минимальное количество лицензий, которое продается в одном пакете лицензий — 25 штук. Каждому покупателю корпоративной лицензии выдается специальный ключ активации CSVLK (или KMS host key), с помощью которого активируется внутренний KMS сервер компании. В дальнейшем клиенты (как ОС Windows, так и офисный пакет MS Office) внутри сети компании могут активироваться на данном KMS сервере, без необходимости обращаться к серверам активации Microsoft в Интернете.
Ошибка KMS активации 0xC004F038 — недостаточное значение счетчика
Однако все администраторы неизбежно сталкиваются с тем, что сразу после установки и активации KMS сервер не активирует операционные системы обратившихся к нему клиентов. При попытке активировать ОС на новом KMS сервере (в этом примере Windows 7 Pro) появится ошибка:
Activating Windows 7, Professional edition
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.
В русской версии Windows 7 ошибка выглядит так:
Дело в том, что на KMS сервере имеется т.н. счётчик активаций (kms count) который увеличивается на единицу при получении нового запроса на активацию от клиента в сети. При обращении KMS сервер присваивает каждому клиенту уникальный идентификатор CMID (client machine identification) и заносит его в свою базу. При этом ОС компьютера, с которого был получен запрос не активируется сразу. Данные запросы на активацию накапливаются во внутреннем кэше KMS сервера. Это происходит до тех пор, пока в базе KMS не будет преодолен определенный минимальный порог запросов на активацию, полученных от клиентов за последние 30 дней. Этот порог составляет 5 запросов на активацию от серверных ОС или 25 запросов от клиентских ОС Windows (пороги активации для десктопных/серверных ОС независимы, т.е. если значение KMS счетчика на сервере для клиентских систем превысило значение 25, этот сервер все равно не будет активировать северные ОС до тех пор, пока количество обращений на активацию с этих платформ не достигнет 5). Если клиент не обращается к серверу активации KMS в течении 30 дней, он автоматически удаляется из базы KMS, а счетчик активации уменьшается на единицу.
Получить значение CMID на конкретном компьютере можно с помощью такой команды:
Get-WmiObject -class SoftwareLicensingService -ComputerName pc1 | Select-object ClientMachineID
Сбросить текущий CMID можно выполнив sysprep или с помощью команды:
slmgr /rearm
(понадобится перезагрузка).
В любой момент общее количество запросов активации, полученных KMS сервером можно посмотреть с помощью команды:
slmgr /dli
В этом примере значение счетчика на KMS сервере равно 50 (Current count).
Чтобы получить точно значение счетчика, выполните на KMS сервере команду:
cscript slmgr.vbs /dlv 98ebfe73-2084-4c97-932c-c0cd1643bea7
Key Management Service cumulative requests received from clients
Total requests received: 2563
Т.е. данным KMS сервером получено 2563 запросов на активацию от клиентов.
Срок активации клиента на KMS сервере — 180 дней, причем каждые 7 дней (7 дней по умолчанию, изменить его можно командой
slmgr.vbs /sri
) клиент пытается продлить активацию (на те же 180 дней). Если в течении 180 дней клиент не продлял активацию, KMS сервер удаляет CMID клиента из базы и уменьшает счетчик активаций. ОС клиента при этом считает себе активированной в течении 180 дней. Если клиент не продлил активацию на KMS сервере в течении этого времени, он переходит в режим grace period.
В том случае, если вы пытаетесь активировать клиентскую ОС на KMS сервере, а счетчик не увеличивается, это может вызвано следующими причинами:
- Дублирующиеся CMID (обычно это происходит из-за клонирования ОС)
- Наличие в сети других KMS серверов. По умолчанию клиенты могут автоматически найти KMS сервер в домене с помощью специальной записи в DNS — srv _vlmcs._tcp (вы можете получить имя сервера, на который указывает данная запись с помощью команды
nslookup -type=srv _vlmcs._tcp
). В этом случае мы можете вручную указать конкретный KMS сервер так:slmgr /skms kms_server.winitpro.ru:1688
) - На клиенте используется неверный ключ. Например, вместо открытого GVLK (Generic Volume License Key) указан MAK / retail ключ, или указан ключ, не соответствующий используемой ОС.
Скрипт для накрутки KMS счетчика
В некоторых случаях даже при наличии приобретенного VLC ключа бывает затруднительно сразу набрать нужное количество клиентов, необходимое для преодоления порога активации KMS сервера и начала активации клиентов (проблема особо актуальна для небольших или изолированных сетей). При активации клиента на сервере в этом случае вы будете получать ошибку 0xC004F038.
В этом случае администратор начинает задумываться об искусственной накрутке счетчика активации KMS. Однако не все так просто… Ни sysprep, ни смена MAC адреса сетевой карты не помогут Вам обмануть KMS сервер. В качестве довольно популярного варианта предлагается создать недостающее количество виртуальных машин и активировать их на KMS сервере (виртуальные машины должны быть уникальными, а не созданными их одного шаблона). Но этот способ довольно трудоемкий и требует необходимости подержания работы этих виртуальных машин (или их повторного развёртывания, включения и активации каждые 180 дней).
В качестве более простой альтернативы советуем вам воспользоваться следующим скриптом, позволяющим накрутить счетчик активации на KMS сервере. Установите нужную версию ОС (в этом примере это Windows 7 Professional), создайте произвольный каталог, скопируйте в него следующий bat файл, в этом же каталоге создайте два пустых файла с именами:
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_increase.bat:
@echo off
set skms=kms1.winitpro.ru
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
ping 127.0.0.1 -n 5 > nul
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato
sc stop sppsvc
:end
kms1.winitpro.ru
– DNS имя или ip-адрес вашего KMS сервера.
количество точек в третье строке
– нужное количество обращений к KMS серверу (в нашем примере мы имитируем обращение 25 уникальных клиентов).
В скрипте добавлена 5 секундная задержка, т.к. в некоторых случаях система возвращала, что файлы заняты, и попытка активации не засчитывалась.
После окончания работы скрипта проверьте значение счетчика активации на KMS сервере:
slmgr /dlv
Значение счетчика Current count должно увеличится на 25. После этого KMS сервер будет активировать все обращающиеся к нему системы клиентские операционные системы (будь то Windows 7, 8 или Win 10). Этот скрипт в дальнейшем (если нужное количество реальных клиентов не наберется) нужно будет запускать каждые 30 дней, т.к. при отсутствии запросов к серверу счетчик активации будет со временем уменьшаться.
Увеличение счетчика активаций с помощью снапшотов виртуальной машины
В том случае, если рассмотренный ваше скрипт не помог вам увеличить счетчик активации на KMS сервере, можно увеличить значение счетчика с помощью возможности создания снапшотов виртуальной машины в Hyper-V / VMWare. Алгоритм следующий:
- Создайте новую ВМ с Windows 10 (не активируйте ее и не вводите GVLK ключ, лучше всего временно отключить ее от сети)
- На рабочем столе ВМ создайте следующие 2 скрипта, один из который сбрасывает CMID и переименовывает имя хоста. Второй выполняет активацию ОС.
Rearm.bat
start “cmd /c slmgr /rearm" timeout /t 10 /nobreak > NUL
kms_activate.bat
wmic computersystem where name="%COMPUTERNAME%" call rename name="pc-%random%"
shutdown /r /t 0
set skms= kms1.winitpro.ru
sc start sppsvc
script.exe "%systemroot%\system32\slmgr.vbs" /skms %1
cscript.exe "%systemroot%\system32\slmgr.vbs" /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
cscript.exe "%systemroot%\system32\slmgr.vbs" /ato - Поместите скрипт kms_activate.bat в автозагрузку.
- Создайте снапшот виртуальной машины.
- Запустите скрипт Rearm.bat с правами администратора. Виртуальная машина перезагрузится и активируется на KMS сервере.
- Откатите состояние ВМ к предыдущему снимку.
- Выполните шаги 5,6 столько раз, какое количество запросов активаций нужно добавить на KMS сервере.