Сервер активации Windows: подключение, настройка и решение ошибок KMS

Быстрый ответ
Сервер активации Windows (KMS Host) разворачивается на Windows Server командой Install-WindowsFeature -Name VolumeActivation, затем вводится KMS-ключ через slmgr /ipk, сервер активируется через slmgr /ato. Клиенты находят его автоматически через DNS SRV-запись _vlmcs._tcp по порту 1688 TCP. Если клиент не активируется — проверь DNS, порт, NTP и счётчик машин (минимум 25 для Windows Client).

Диагноз: 50 машин с водяным знаком в понедельник утром

Открываешь почту. Десять тикетов с одним текстом: «Windows не активирована». Лицензии куплены, деньги заплачены — водяной знак висит. Знакомо?

В 90% случаев причина одна: что-то случилось с сервером активации Windows (KMS). Не отвечает, закрыт порт, упала DNS-запись, слетел NTP. Иногда всё сразу — потому что «трогать нельзя, само работало».

В этой статье ты получишь: понимание архитектуры KMS от и до, пошаговую установку и настройку, диагностику через VAMT, Docker-вариант развёртывания, разбор всех кодов ошибок и чек-лист на случай пожара. Времени уйдёт час на первичную настройку, десять минут — на диагностику по чек-листу.

Что нужно: Windows Server 2019/2022, KMS Host Key из VLSC, права администратора домена, 15 минут.

В статье:

  • Как работает корпоративный сервер активации Windows — архитектура KMS
  • KMS vs MAK — что выбрать и почему
  • Настройка KMS Host с нуля, шаг за шагом
  • Подключение клиентов: автоматически и вручную
  • Особенности активации Windows 11 через KMS
  • VAMT — управление лицензиями и диагностика
  • KMS в Docker — альтернативное развёртывание
  • Troubleshooting: все коды ошибок с решениями
  • Чек-лист: клиент не активируется
  • FAQ под Google PAA

Как работает сервер активации Windows: архитектура KMS

KMS (Key Management Service) — локальный сервер активации Windows, который компания разворачивает внутри своей инфраструктуры. Клиентские машины активируются через него без выхода в интернет. Активация временная: каждые 7 дней клиент связывается с KMS и обновляет её. Если 180 дней не было связи — слетает.

Вот тут важно понять три ключевых элемента:

KMS Host — роль Windows Server с введённым KMS Host Key. Активируется один раз через Microsoft, потом работает автономно. Один хост обслуживает всю инфраструктуру.

DNS SRV-запись _vlmcs._tcp — через неё клиенты автоматически находят сервер активации Windows в сети. KMS Host регистрирует её при установке роли. Нет записи — нет автообнаружения.

Порт 1688 TCP — стандартный порт KMS. Должен быть открыт на всём пути от клиента до KMS Host. Файрвол закрыл порт — получай 0xC004F074 на всех машинах разом.

Минимальный порог активации. KMS не выдаёт активации пока не наберёт минимум уникальных машин: 25 для Windows Client, 5 для Windows Server. Это защита Microsoft от злоупотреблений. В тестовых средах — используй MAK.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 55}
}}%%
flowchart TD
    MS["Microsoft Activation Servers"]
    KMS["KMS Host\nWindows Server 2019/2022\nПорт 1688"]
    DNS["DNS SRV\n_vlmcs._tcp.domain.local"]
    C1["Windows Client 1"]
    C2["Windows Client 2"]
    C3["Windows Server / VM"]
    VAMT["VAMT\nУправление лицензиями"]

    MS -->|"KMS Host Key\nОдноразово"| KMS
    KMS -->|"Авторегистрация"| DNS
    DNS -->|"SRV lookup"| C1
    DNS -->|"SRV lookup"| C2
    DNS -->|"SRV lookup"| C3
    C1 -->|"TCP 1688\nКаждые 7 дней"| KMS
    C2 -->|"TCP 1688\nКаждые 7 дней"| KMS
    C3 -->|"TCP 1688\nКаждые 7 дней"| KMS
    VAMT -->|"Мониторинг / MAK"| KMS

    style MS fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style KMS fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style DNS fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
    style C1 fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
    style C2 fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
    style C3 fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b
    style VAMT fill:#f8fafc,stroke:#f97316,stroke-width:2px,color:#c2410c

Схема 1: Архитектура корпоративного сервера активации Windows (KMS). Клиенты находят KMS Host через DNS SRV-запись и периодически обновляют активацию по порту 1688.

KMS vs MAK: что выбрать

Параметр KMS (локальный сервер активации) MAK (напрямую через Microsoft)
Локальный сервер Нужен Не нужен
Интернет на клиентах Не нужен Нужен (или телефонная активация)
Тип активации Временная, 180 дней — автообновление Постоянная
Минимум машин 25 (Client) / 5 (Server) Без ограничений
Изолированные сети Идеально Только телефонная активация
Контроль лицензий Централизованный через VAMT Счётчик активаций конечен
Подходит для Компании от 25 машин Малый бизнес, отдельные ПК, тестовые стенды

Правило простое: меньше 25 машин или изолированный стенд без домена — MAK. Всё остальное — KMS. Смешивать можно: KMS для рабочих станций в домене, MAK для серверов в DMZ.


Установка и настройка сервера активации Windows (KMS Host)

Что нужно перед стартом

  • Windows Server 2019 или 2022 (рекомендую 2022 — поддерживает Windows 11 без патчей)
  • KMS Host Key из VLSC (portal.azure.com → Volume Licensing) или MPSA-портала — это не GVLK, это отдельный ключ для самого хоста
  • Права локального администратора на сервере
  • Доступ в интернет для первичной активации хоста (или VAMT для офлайн)
  • DNS-зона для домена (company.local или prod.local)

Шаг 1 — Установка роли Volume Activation Services


# Установить роль и инструменты управления:
Install-WindowsFeature -Name VolumeActivation -IncludeManagementTools

# Проверить что установилось:
Get-WindowsFeature -Name VolumeActivation

Результат: строка с [X] Volume Activation Services и Installed. Перезагрузка не нужна.

Шаг 2 — Ввод KMS Host Key


# Ввести KMS Host Key (замени XXXXX на свой ключ из VLSC):
slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

# Проверить, что ключ принят:
slmgr /dli
Важно: GVLK ≠ KMS Host Key
KMS Host Key — это ключ для активации самого KMS-сервера. Он выдаётся через VLSC/MPSA. GVLK (Generic Volume License Key) — ключи для клиентских машин, они публичны и есть в документации Microsoft. Не перепутай: ввод GVLK вместо Host Key превратит твой сервер в ещё одного KMS-клиента.

Шаг 3 — Активация KMS Host через Microsoft


# Онлайн-активация (нужен выход в интернет):
slmgr /ato

# Проверить статус активации хоста:
slmgr /dlv

В выводе slmgr /dlv ищи строку License Status: Licensed. Это значит KMS Host активирован и готов обслуживать клиентов.

Если интернета нет — используй VAMT (раздел ниже) или телефонную активацию: slmgr /dti покажет Installation ID, который называешь оператору Microsoft.

Шаг 4 — Проверка DNS SRV-записи


# Проверить, зарегистрировалась ли SRV-запись автоматически:
nslookup -type=SRV _vlmcs._tcp.company.local

# Принудительно зарегистрировать запись (если автоматически не появилась):
slmgr /sdns

# Удалить запись (если нужно убрать с этого хоста):
slmgr /cdns

Ожидаемый вывод nslookup:


_vlmcs._tcp.company.local  SRV service location:
        priority       = 0
        weight         = 0
        port           = 1688
        svr hostname   = kms.company.local

Нет записи — клиенты не найдут сервер автоматически. Либо slmgr /sdns, либо добавь вручную в DNS-консоли: Зона → Другие записи → Служебное расположение (SRV), служба _vlmcs, протокол _tcp, порт 1688.

Шаг 5 — Открыть порт 1688 в Windows Firewall


# Создать правило файрвола для KMS:
New-NetFirewallRule -DisplayName "KMS Port 1688" `
    -Direction Inbound `
    -Protocol TCP `
    -LocalPort 1688 `
    -Action Allow `
    -Profile Domain,Private

# Проверить что правило создано:
Get-NetFirewallRule -DisplayName "KMS Port 1688"

Шаг 6 — Проверка состояния KMS Host


# Полная информация: версия, счётчик клиентов, порог, статус:
slmgr /dlv

# Краткая информация:
slmgr /dli

# Только счётчик клиентов (Current Count):
slmgr /dlv | findstr /i "current count"

Смотри на поле Current Count — количество уникальных клиентов за последние 30 дней. Должно быть ≥ 25 для Windows Client или ≥ 5 для Windows Server. Меньше — KMS не выдаёт активации.


Подключение клиентов к серверу активации Windows

Автоматически — через DNS

Если SRV-запись есть в DNS и клиент в том же домене — делай просто:


# Запустить активацию (клиент сам найдёт KMS через DNS):
slmgr /ato

# Проверить статус:
slmgr /dli

Вручную — если DNS не работает или нужен конкретный хост


# Указать адрес сервера активации вашей компании:
slmgr /skms kms.company.local

# Или с явным портом:
slmgr /skms kms.company.local:1688

# Выполнить активацию:
slmgr /ato

# Проверить - к какому серверу привязан клиент:
slmgr /dlv | findstr /i "kms machine"

# Сбросить ручное указание (вернуть автообнаружение через DNS):
slmgr /ckms

GVLK-ключи для клиентов

Клиент должен использовать GVLK — публичный ключ, который говорит системе «я корпоративная лицензия, ищи KMS». Актуальные ключи из документации Microsoft:

ОС Редакция GVLK
Windows 11 Pro W269N-WFGWX-YVC9B-4J6C9-T83GX
Windows 11 Enterprise NPPR9-FWDCX-D2C8J-H872K-2YT43
Windows 10 Pro W269N-WFGWX-YVC9B-4J6C9-T83GX
Windows 10 Enterprise NPPR9-FWDCX-D2C8J-H872K-2YT43
Windows Server 2022 Datacenter WX4NM-KYWYW-QJJR4-XV3QB-6VM33
Windows Server 2022 Standard VDYBN-27WPP-V4HQT-9VMD4-VMK7H
Windows Server 2019 Datacenter WMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 Standard N69G4-B89J2-4G8F4-WWYCC-J464C

# Ввести GVLK на клиенте (пример для Windows 11 Pro):
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX

# После ввода ключа - запустить активацию:
slmgr /ato

Групповая политика: автоматическое указание KMS для всех машин домена


Путь в GPO:
Конфигурация компьютера
  → Административные шаблоны
    → Компоненты Windows
      → Развёртывание программного обеспечения
        → Управление ключами активации тома

Параметр: "Укажите имя узла и порт службы управления ключами"
Значение:  kms.company.local:1688

Windows 11 и сервер активации Windows: что изменилось

Механизм KMS тот же — порт 1688, DNS SRV, тот же slmgr. Но есть нюансы, на которых ломаются.

KMS Host должен быть обновлён. Для активации Windows 11 нужен KMS Host на Windows Server 2019 или 2022 с актуальными обновлениями. KMS Host на Server 2012 R2 без специального патча Windows 11 не активирует.

KMS Host Key обновлён. Для активации Windows 11 через корпоративный сервер активации нужен новый KMS Host Key — получи через VLSC. Старый ключ от Windows 10 не покрывает Windows 11.

Проверить что KMS Host поддерживает Windows 11:


# На KMS Host - посмотреть список поддерживаемых продуктов:
slmgr /dlv

# В выводе должна быть строка:
# Windows 11 ... VOLUME_KMSCLIENT channel
# Если нет - обнови KMS Host Key через VLSC

TPM 2.0 и Secure Boot — требования только к установке Windows 11, не к KMS-активации. Корпоративный сервер активации Windows 11 работает по тем же правилам порта и DNS.


VAMT — управление лицензиями и офлайн-активация

VAMT (Volume Activation Management Tool) — это GUI-инструмент для централизованного управления лицензиями. Качаешь из Windows ADK, ставишь на любую машину домена.

Зачем нужен, кроме красивого интерфейса:

  • Офлайн-активация KMS Host и MAK-клиентов без прямого доступа в интернет
  • Прокси-активация: VAMT выходит в интернет сам и активирует изолированные машины через себя
  • Инвентаризация лицензий: какая машина, какой ключ, когда истекает
  • Массовое управление MAK-активациями
  • Аудит — кто сколько лицензий потребляет

Установка VAMT


# VAMT входит в Windows ADK. Скачай ADK с сайта Microsoft:
# https://docs.microsoft.com/en-us/windows-hardware/get-started/adk-install

# При установке ADK выбери только компонент:
# "Volume Activation Management Tool (VAMT)"

# Также нужен SQL Server Express (или LocalDB) для базы данных VAMT:
# Скачай Microsoft SQL Server 2019 Express:
# https://www.microsoft.com/en-us/sql-server/sql-server-downloads

# Проверить что VAMT запустился:
# Пуск → Windows Kits → Volume Activation Management Tool

Офлайн-активация KMS Host через VAMT

Сценарий: KMS Host без доступа в интернет. VAMT стоит на машине с интернетом.


# Шаг 1. На изолированном KMS Host - получить Installation ID:
slmgr /dti
# Скопируй Installation ID (длинная строка цифр)

# Шаг 2. На машине с VAMT и интернетом:
# VAMT → Products → добавить KMS Host → ввести Installation ID
# VAMT → Activate → Online Activate → получает Confirmation ID

# Шаг 3. На изолированном KMS Host - ввести Confirmation ID:
slmgr /atp XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XXXXX-XX
# (Confirmation ID из VAMT)

# Проверить активацию:
slmgr /dlv
# License Status: Licensed

Прокси-активация MAK-клиентов через VAMT


Сценарий: изолированная сеть, клиенты без интернета, MAK-лицензии.

1. VAMT Discover → находит все машины в сети
2. VAMT → добавить MAK-ключ
3. VAMT → Activate → Proxy Activate
   VAMT сам выходит в Microsoft, активирует машины через себя
4. VAMT → Install Product Key → раскатывает активацию на все машины

Инвентаризация лицензий через VAMT


# Обнаружить все машины в домене через VAMT PowerShell:
# (команды выполняются в консоли VAMT)

# Импортировать модуль:
Import-Module VAMT

# Найти машины по OU:
Get-VamtProduct -Domain company.local

# Экспортировать отчёт в CSV:
Get-VamtProduct | Export-Csv -Path C:\vamt-report.csv -Encoding UTF8

KMS в Docker: альтернативное развёртывание

Иногда гонять полноценный Windows Server только ради KMS — избыточно. Особенно в лабораторных средах, небольших компаниях или когда нужно быстро поднять тестовую активацию.

Важное предупреждение
KMS-сервер в Docker — решение только для лабораторных и тестовых сред. Для продакшн-инфраструктуры используй официальный Windows Server с ролью Volume Activation Services. Любые неофициальные KMS-эмуляторы нарушают лицензионное соглашение Microsoft.

Для легального сценария существует другой подход: развернуть Windows Server в контейнере Windows Containers на Docker и поставить туда официальную роль KMS. Но это уже тяжёлый Windows-контейнер.

Практически применимый вариант в инфраструктуре — KMS Host на минимальном Windows Server Core. Образ весит ~3–4 ГБ против 15+ ГБ у полного Server с GUI.

Вариант 1: Windows Server Core + KMS роль


# На Server Core (без GUI) - всё через PowerShell:

# Установить роль:
Install-WindowsFeature -Name VolumeActivation

# Ввести KMS Host Key:
slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

# Активировать:
slmgr /ato

# Открыть порт:
netsh advfirewall firewall add rule name="KMS" dir=in action=allow protocol=TCP localport=1688

# Зарегистрировать DNS SRV:
slmgr /sdns

# Проверить счётчик:
slmgr /dlv

Вариант 2: KMS Host в Docker (Windows Containers)


# Dockerfile для Windows Server Core + KMS роль:
# (только для тестовых сред)

FROM mcr.microsoft.com/windows/servercore:ltsc2022

# Установить роль Volume Activation:
RUN powershell -Command Install-WindowsFeature -Name VolumeActivation

# Открыть порт 1688:
EXPOSE 1688

# Скрипт запуска:
COPY start-kms.ps1 C:\start-kms.ps1
CMD ["powershell", "-File", "C:\\start-kms.ps1"]

# start-kms.ps1 - скрипт запуска внутри контейнера:

# Ввести KMS Host Key (передаётся через переменную окружения):
$kmsKey = $env:KMS_HOST_KEY
if ($kmsKey) {
    slmgr /ipk $kmsKey
    slmgr /ato
}

# Открыть порт в Windows Firewall контейнера:
netsh advfirewall firewall add rule name="KMS" dir=in action=allow protocol=TCP localport=1688

# Зарегистрировать DNS SRV (если есть доступ к DNS):
slmgr /sdns

# Держать контейнер живым:
while ($true) { Start-Sleep -Seconds 60 }

# docker-compose.yml для KMS в Windows Containers:

# version: '3.8'
# services:
#   kms:
#     build: .
#     environment:
#       - KMS_HOST_KEY=XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
#     ports:
#       - "1688:1688"
#     restart: unless-stopped

# Запустить контейнер:
docker-compose up -d

# Проверить что порт слушается:
docker exec kms netstat -an | findstr 1688

# Проверить статус KMS внутри контейнера:
docker exec kms slmgr /dlv

Ограничение Windows Containers KMS: для Windows Containers нужен хост на Windows Server или Windows 10/11 Pro с включёнными Windows Containers. На Linux Docker этот вариант не работает — KMS роль требует Windows.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 55}
}}%%
flowchart LR
    DH["Docker Host\nWindows Server 2022"]
    KC["KMS Container\nServer Core + роль KMS\nПорт 1688"]
    DNS["DNS SRV\n_vlmcs._tcp"]
    CL["Клиенты домена"]

    DH -->|"Windows Containers"| KC
    KC -->|"Авторегистрация"| DNS
    DNS -->|"Lookup"| CL
    CL -->|"TCP 1688"| KC

    style DH fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style KC fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style DNS fill:#f8fafc,stroke:#94a3b8,stroke-width:2px,color:#1e293b
    style CL fill:#f8fafc,stroke:#94a3b8,stroke-width:1px,color:#1e293b

Схема 2: KMS Host в Windows Container. Docker Host на Windows Server, контейнер с Server Core и ролью KMS, порт 1688 проброшен наружу.


Troubleshooting: ошибки сервера активации Windows

Вот тут большинство статей заканчиваются на «проверьте подключение». Мы пойдём по-другому — каждый код ошибки, причина и конкретное решение.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 45, 'rankSpacing': 50}
}}%%
flowchart TD
    ERR["slmgr /ato - ошибка"]
    DNS_CHK["DNS SRV запись есть?"]
    PORT_CHK["Порт 1688 открыт?"]
    NTP_CHK["NTP синхронизирован?"]
    SVC_CHK["Служба sppsvc запущена?"]
    CNT_CHK["Current Count >= 25/5?"]
    OK["Активация успешна"]

    ERR --> DNS_CHK
    DNS_CHK -->|"Нет"| FIX_DNS["slmgr /sdns\nили добавить вручную"]
    DNS_CHK -->|"Есть"| PORT_CHK
    PORT_CHK -->|"Закрыт"| FIX_PORT["Открыть правило\nфайрвола TCP 1688"]
    PORT_CHK -->|"Открыт"| NTP_CHK
    NTP_CHK -->|"Разница > 4ч"| FIX_NTP["w32tm /resync /force"]
    NTP_CHK -->|"OK"| SVC_CHK
    SVC_CHK -->|"Остановлена"| FIX_SVC["Start-Service sppsvc"]
    SVC_CHK -->|"Running"| CNT_CHK
    CNT_CHK -->|"Меньше порога"| FIX_CNT["Добавить машины\nили MAK"]
    CNT_CHK -->|"OK"| OK

    FIX_DNS --> OK
    FIX_PORT --> OK
    FIX_NTP --> OK
    FIX_SVC --> OK

    style ERR fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#b91c1c
    style OK fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d
    style FIX_DNS fill:#f8fafc,stroke:#22c55e,stroke-width:1px,color:#15803d
    style FIX_PORT fill:#f8fafc,stroke:#22c55e,stroke-width:1px,color:#15803d
    style FIX_NTP fill:#f8fafc,stroke:#22c55e,stroke-width:1px,color:#15803d
    style FIX_SVC fill:#f8fafc,stroke:#22c55e,stroke-width:1px,color:#15803d
    style FIX_CNT fill:#f8fafc,stroke:#f97316,stroke-width:1px,color:#c2410c

Схема 3: Дерево диагностики сервера активации Windows. Проходи сверху вниз — в большинстве случаев проблема находится на первых двух уровнях.

0xC004F074 — не удаётся связаться с сервером активации

Самый частый код. Клиент не смог добраться до ни одного KMS Host.


# 1. Проверить DNS SRV-запись:
nslookup -type=SRV _vlmcs._tcp.company.local
# Нет ответа → регистрируем: slmgr /sdns (на KMS Host)

# 2. Проверить доступность порта:
Test-NetConnection -ComputerName kms.company.local -Port 1688
# TcpTestSucceeded: False → открыть правило файрвола

# 3. Проверить NTP:
w32tm /query /status
# Если разница времени > 4 часов с KMS Host → w32tm /resync /force

# 4. Принудительно указать KMS и попробовать ещё раз:
slmgr /skms kms.company.local:1688
slmgr /ato

0xC004F038 — счётчик не достиг минимального порога

KMS Host работает, клиент его видит — но машин в счётчике меньше нормы. Это не ошибка KMS Host, это архитектурное ограничение Microsoft.


# Проверить Current Count на KMS Host:
slmgr /dlv | findstr /i "current count"
# Windows Client: нужно >= 25
# Windows Server: нужно >= 5

# Если машин меньше порога - два варианта:
# 1. Подключить больше машин и подождать (они появятся в счётчике в течение суток)
# 2. Переключиться на MAK для этих машин

0xC004C008 — ключ использован максимальное число раз

Актуально для MAK. Счётчик активаций исчерпан.


# Проверить текущий ключ на клиенте:
slmgr /dli

# Если это MAK - запросить дополнительные активации в Microsoft:
# my.visualstudio.com или звонок на горячую линию

# Если видишь этот код на KMS-клиенте - значит у него MAK вместо GVLK:
slmgr /ipk GVLK-КЛЮЧ-ДЛЯ-ВАШЕЙ-РЕДАКЦИИ
slmgr /ato

0xC004F025 — доступ запрещён

Почти всегда одна причина: запустил CMD или PowerShell не от администратора. Закрой. Открой правой кнопкой — «Запуск от имени администратора». Повтори.


# Проверить, что запущено с правами админа:
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
# True - хорошо. False - перезапусти от администратора.

0xC004F069 — продукт не найден в таблице политик

KMS Host не знает этот продукт. Обычно: пытаешься активировать Windows 11 через старый KMS Host, или используешь ключ не той редакции.


# Проверить редакцию Windows на клиенте:
winver
# или
Get-WindowsEdition -Online

# Убедиться что GVLK соответствует редакции:
# (таблица GVLK выше в статье)

# На KMS Host - проверить список поддерживаемых продуктов:
slmgr /dlv
# Должна быть запись для нужной версии Windows

0xC004F050 — ключ активации недействителен

Введён неверный ключ. Либо опечатка, либо ключ от другого продукта, либо GVLK вместо Host Key на самом KMS Host.


# Проверить текущий ключ:
slmgr /dli | findstr /i "partial"
# Покажет последние 5 символов установленного ключа

# Переустановить правильный ключ:
slmgr /ipk ПРАВИЛЬНЫЙ-КЛЮЧ-ЗДЕСЬ
slmgr /ato

0x8007000D — неверные данные / повреждён токен лицензии

Слетел лицензионный токен. Лечится сбросом и повторной активацией.


# Остановить службу Software Protection:
net stop sppsvc

# Переименовать токен (не удалять!):
ren C:\Windows\System32\spp\store\2.0\tokens.dat tokens.dat.bak

# Запустить службу:
net start sppsvc

# Попробовать активировать заново:
slmgr /ato
Если ничего не помогло
Выполни полный сброс состояния лицензирования. Это удалит все данные активации и вернёт систему в состояние «до активации». Делай только если другие методы не сработали и ты понимаешь что делаешь.

# Полный сброс состояния активации (rearm):
slmgr /rearm

# Перезагрузка обязательна:
shutdown /r /t 0

# После перезагрузки - заново ввести GVLK и активировать:
slmgr /ipk GVLK-КЛЮЧ
slmgr /ato

Таблица кодов ошибок

Код ошибки Описание Первый шаг диагностики
0xC004F074 Сервер активации недоступен nslookup _vlmcs._tcp + Test-NetConnection 1688
0xC004F038 Счётчик ниже минимального порога slmgr /dlv | findstr «current count»
0xC004C008 MAK-ключ исчерпан Запросить дополнительные активации в Microsoft
0xC004F025 Доступ запрещён Запустить CMD / PowerShell от администратора
0xC004F069 Продукт не в таблице политик KMS Обновить KMS Host Key, проверить редакцию ОС
0xC004F050 Ключ недействителен slmgr /dli → проверить последние 5 символов ключа
0x8007000D Повреждён токен лицензии Сбросить tokens.dat, перезапустить sppsvc
0xC004F034 Ключ не подходит для этой версии ОС Проверить соответствие GVLK и редакции Windows
0x80070005 Отказано в доступе (реестр/файловая система) Запустить от администратора, проверить антивирус

Чек-лист: клиент не активируется — проходи по порядку

В 90% случаев причина обнаруживается на первых трёх пунктах. Один инженер в 3 ночи дойдёт до конца списка максимум за 15 минут — остальное уже нестандартный случай.

1. DNS SRV-запись


nslookup -type=SRV _vlmcs._tcp.company.local
# Ожидаем: svr hostname = kms.company.local, port = 1688
# Нет ответа → на KMS Host: slmgr /sdns

2. Порт 1688


Test-NetConnection -ComputerName kms.company.local -Port 1688
# TcpTestSucceeded: True → порт открыт
# False → открыть правило файрвола на KMS Host

3. Принудительная активация и читаем код ошибки


slmgr /ato
# 0x0 - успешно
# Другой код → смотри таблицу выше

4. Статус клиента


slmgr /dlv
# License Status: Licensed - активирован
# Notification - не активирован (водяной знак)
# KMS machine IP address: x.x.x.x - к какому серверу подключился

5. NTP синхронизация


w32tm /query /status
# Last Successful Sync Time - должно быть недавно
# Проблема → w32tm /resync /force

6. Служба Software Protection


Get-Service sppsvc
# Status: Running - норма
# Stopped → Start-Service sppsvc

7. Счётчик клиентов на KMS Host


# Выполнять на KMS Host:
slmgr /dlv | findstr /i "current count"
# >= 25 (Windows Client) или >= 5 (Windows Server)
# Меньше → добавить машины или переключить на MAK

8. DNS-суффикс на клиенте


ipconfig /all | findstr /i "dns suffix"
# Должен совпадать с доменом, где зарегистрирована SRV-запись
# Не совпадает → добавить суффикс вручную или через DHCP опцию 15

Профилактика: как не получить водяной знак в понедельник

Мониторинг KMS Host. Добавь проверку порта 1688 в систему мониторинга (Zabbix, PRTG, Nagios). Шаблон простой: TCP check на kms.company.local:1688. Алерт за 24 часа до потенциальных проблем лучше, чем утренние тикеты.


# Простой скрипт мониторинга для Task Scheduler:
# Запускать ежедневно, результат - в лог или алерт

$kmsHost = "kms.company.local"
$result = Test-NetConnection -ComputerName $kmsHost -Port 1688 -WarningAction SilentlyContinue

if (-not $result.TcpTestSucceeded) {
    $body = "ALERT: KMS Host $kmsHost port 1688 unreachable at $(Get-Date)"
    Send-MailMessage -To "admin@company.local" -Subject "KMS Alert" -Body $body `
        -SmtpServer "smtp.company.local" -From "monitoring@company.local"
    Write-EventLog -LogName Application -Source "KMS-Monitor" -EventId 1688 -EntryType Error -Message $body
}

Резервный KMS Host. Один KMS Host — единая точка отказа. Подними второй на другом сервере. При регистрации второго хоста в DNS появится вторая SRV-запись — клиенты будут выбирать автоматически. Счётчик клиентов суммируется по обоим хостам.


# На втором KMS Host - та же последовательность:
Install-WindowsFeature -Name VolumeActivation -IncludeManagementTools
slmgr /ipk XXXXX-XXXXX-XXXXX-XXXXX-XXXXX
slmgr /ato
slmgr /sdns

# Проверить что оба хоста зарегистрированы:
nslookup -type=SRV _vlmcs._tcp.company.local
# Должно быть два ответа - kms1.company.local и kms2.company.local

Автозапуск службы Software Protection. Убедись что служба настроена на автоматический старт — иначе после обновлений или нештатной перезагрузки KMS Host может не запуститься.


# На KMS Host:
Set-Service -Name sppsvc -StartupType Automatic
Get-Service sppsvc | Select-Object Name, Status, StartType

Обновления KMS Host Key. При выходе новых версий Windows (11 24H2, Windows Server 2025 и т.д.) обновляй KMS Host Key через VLSC. Старый ключ может не покрывать новые версии ОС.


FAQ: вопросы про сервер активации Windows

Почему клиент активировался, а через неделю опять водяной знак?

KMS-активация временная — 180 дней. Но клиент обновляет её каждые 7 дней, пока видит KMS Host. Если водяной знак появился снова — клиент не смог связаться с сервером активации Windows 7 дней подряд. Проверь доступность KMS Host, DNS SRV-запись и порт 1688. Скорее всего KMS Host был недоступен (перезагрузка, обновление, файрвол).

Как проверить, к какому серверу активации подключается конкретный клиент?


slmgr /dlv
# Строка "KMS machine IP address" покажет IP и порт KMS Host
# Строка "KMS machine name" покажет DNS-имя
# "Last activation attempt" - когда последний раз пытался активироваться

Что если машин меньше 25 — KMS вообще не работает?

Правильно понимаешь. При Current Count меньше 25 (для Windows Client) KMS Host отвечает клиентам кодом 0xC004F038 — счётчик не достиг порога. Есть три варианта: дождаться пока наберётся 25 машин, использовать MAK вместо KMS, или настроить тестовое снижение порога (только для лабораторий, не для продакшна).

Можно ли использовать один KMS Host для всех версий Windows?

Да, если KMS Host Key покрывает нужные версии. Один KMS Host на Windows Server 2022 с актуальным Host Key активирует Windows 10, Windows 11, Windows Server 2016, 2019, 2022 одновременно. Главное — убедись через slmgr /dlv что в списке поддерживаемых продуктов есть нужные версии.

Почему slmgr /ato выдаёт ошибку, но лицензия показывается как Licensed?

Бывает при повторном запуске slmgr /ato на уже активированной машине в момент когда активация ещё не истекла. Смотри slmgr /xpr — покажет точную дату истечения активации. Если дата в будущем — всё нормально, ошибка игнорируется.


# Проверить дату истечения активации:
slmgr /xpr

Что такое VAMT и нужен ли он если KMS уже настроен?

VAMT — инструмент управления лицензиями, не замена KMS. KMS — это сервис активации. VAMT — это административная консоль поверх него: инвентаризация лицензий, офлайн-активация через прокси, управление MAK-ключами, аудит. Если у тебя KMS настроен и всё работает — VAMT нужен для отчётности и для офлайн/изолированных сред. В остальных случаях — по желанию.


Итог

Корпоративный сервер активации Windows по KMS — это не сложно. Час на первичную настройку, один KMS Host на домен (второй — для резервирования), DNS SRV-запись, порт 1688, NTP синхронизирован. Всё.

В 90% случаев проблемы с активацией — это одна из четырёх причин: нет DNS SRV-записи, закрыт порт, расползлось время, упала служба sppsvc. Чек-лист выше закрывает все четыре за 10 минут.

VAMT — добавь в инструментарий сразу, особенно если есть изолированные сети или MAK-лицензии. Docker-вариант на Windows Server Core — для лабораторных сред где не хочется тащить полный сервер.

Не активировалось - пишите
Если прошли весь чек-лист и нестандартный код ошибки — пишите в комментарии. Разберём. Подписывайтесь на телеграм-канал IT-Apteka — туда выходят новые рецепты без воды.
VAMT: централизованное управление MAK и KMS активациями KMS сервер в Docker: варианты развёртывания BitLocker в Windows: включение и управление ключами

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

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

Прокрутить вверх