🔧 KMS 故障排除

批量激活服务 KMS · 第 10 篇 · 适用于 Windows Server 2019 / 2022 / 2025

📑 目录

  1. 1. KMS 故障排除流程
  2. 2. KMS 主机激活失败
  3. 3. 客户端激活失败(0xC004F038)
  4. 4. 客户端激活失败(0xC004F074)
  5. 5. DNS SRV 记录问题
  6. 6. 防火墙与连通性问题
  7. 7. 事件日志分析
  8. 8. 常用错误代码速查

1. KMS 故障排除流程

KMS 故障排除应遵循 从服务器到客户端 的顺序:

  1. 检查 KMS 主机状态(激活状态、端口监听)
  2. 检查 DNS SRV 记录(客户端自动发现)
  3. 检查 防火墙(TCP 1688 端口)
  4. 检查 客户端配置(CSVLK、KMS 服务器地址)
  5. 检查 激活阈值(是否达到 25 台 Windows/5 台 Server)
  6. 查看 事件日志(KMS 操作日志)
💡 快速诊断命令
# 在 KMS 主机上运行
slmgr.vbs /dlv

# 在客户端上运行
slmgr.vbs /dlv
nslookup -type=srv _vlmcs._tcp.iehang.cn
Test-NetConnection -ComputerName kms.iehang.cn -Port 1688

2. KMS 主机激活失败

KMS 主机无法激活的常见原因:

2.1 KMS 主机密钥无效或已过期

CMD - 验证 KMS 主机密钥
REM 在 KMS 主机上运行
slmgr.vbs /dlv

REM 检查输出:
REM - License Status: Licensed(已激活)
REM - License Status: Grace Period(未激活,宽限期)
REM - License Status: Notification(激活失败)

REM 如果未激活,重新安装密钥并激活:
slmgr.vbs /ipk <KMS_HOST_KEY>
slmgr.vbs /ato

2.2 无法连接微软激活服务器(在线激活失败)

1

使用 电话激活

slmgr.vbs /dti

记录 安装 ID,拨打微软激活中心电话,提供安装 ID,获取确认 ID。

2

使用确认 ID 激活:

slmgr.vbs /atp <CONFIRMATION_ID>
⚠️ 注意

KMS 主机密钥从 VLSC 获取。如果密钥无效,登录 VLSC 重新下载密钥。

3. 客户端激活失败(0xC004F038)

错误 0xC004F038 表示 KMS 激活阈值未达到

⚠️ 激活阈值
  • Windows 客户端:至少 25 台请求激活
  • Windows Server:至少 5 台请求激活
  • Office:至少 5 台安装请求激活
PowerShell - 检查当前计数
# 在 KMS 主机上运行
$dlv = cscript "$env:SystemRoot\system32\slmgr.vbs" "/dlv"
$dlv | Select-String "Current Count"

# 输出示例:
# Current Count: 12(还差 13 台 Windows 客户端)
💡 实验环境解决方案

快速克隆多台 Windows 10 虚拟机(使用 Sysprep 通用化),或临时修改注册表跳过阈值检查(仅用于实验,不推荐生产环境)。

4. 客户端激活失败(0xC004F074)

错误 0xC004F074 表示 客户端无法连接到 KMS 主机

1

检查 KMS 服务器地址配置:

slmgr.vbs /dlv

查看 KMS 主机名称 字段,确认是否指向正确的 KMS 主机。

2

测试 KMS 主机连通性:

Test-NetConnection -ComputerName kms.iehang.cn -Port 1688

如果 TcpTestSucceeded: False,检查防火墙。

3

检查 DNS SRV 记录:

nslookup -type=srv _vlmcs._tcp.iehang.cn

如果记录不存在,手动创建(参见第 5 节)。

5. DNS SRV 记录问题

客户端无法通过 DNS 自动发现 KMS 主机。

5.1 SRV 记录不存在

CMD - 验证 SRV 记录
nslookup -type=srv _vlmcs._tcp.iehang.cn

REM 如果输出"*** 找不到 _vlmcs._tcp.iehang.cn: Non-existent domain"
REM 说明 SRV 记录不存在,需要手动创建(参见第 4 篇 4.1 节)

5.2 KMS 主机未发布 SRV 记录

CMD - 启用 DNS 发布
REM 在 KMS 主机上运行
slmgr.vbs /dlv

REM 检查"DNS publishing enabled": Yes
REM 如果为 No,运行:
slmgr.vbs /dns
💡 手动创建 SRV 记录

在 DNS 管理器(dnsmgmt.msc)中:

  1. 右键域名 → 其他新记录
  2. 选择 服务位置(SRV)创建记录
  3. 服务:_vlmcs,协议:_tcp,端口:1688,提供服务的主机:kms.iehang.cn

6. 防火墙与连通性问题

防火墙阻止 TCP 1688 端口是常见原因。

PowerShell - 检查防火墙规则
# 在 KMS 主机上运行
Get-NetFirewallRule | Where-Object { $_.LocalPort -eq 1688 }

# 如果规则不存在,创建规则:
New-NetFirewallRule -Name "KMS-TCP-1688" `
    -DisplayName "KMS Service (TCP 1688)" `
    -Protocol "TCP" `
    -LocalPort 1688 `
    -Action "Allow" `
    -Direction "Inbound"

6.1 测试端口连通性(客户端)

PowerShell - 测试端口
# 在客户端上运行
Test-NetConnection -ComputerName kms.iehang.cn -Port 1688

# 输出应显示:
# TcpTestSucceeded : True

# 如果为 False,检查:
# 1. KMS 主机防火墙
# 2. 网络路径(ping kms.iehang.cn)
# 3. KMS 主机服务是否运行(slmgr.vbs /dlv 查看 Listening on Port: 1688)

7. 事件日志分析

KMS 事件日志位于 应用程序和服务日志 → Microsoft → Windows → Key Management Service → KMS

事件 ID说明处理方法
12290KMS 操作日志(客户端请求激活)正常,记录客户端激活请求
12288KMS 主机激活状态变更检查 KMS 主机密钥激活状态
12293KMS 无法发布 DNS SRV 记录检查 DNS 动态更新设置
12294KMS 主机密钥即将过期重新激活 KMS 主机密钥
12300KMS 客户端激活失败检查客户端配置和网络
PowerShell - 查询 KMS 事件日志
# 查询最近的 KMS 操作日志
Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-Key Management Service/KMS"; ID=12290} -MaxEvents 20

# 导出事件日志
Get-WinEvent -FilterHashTable @{LogName="Microsoft-Windows-Key Management Service/KMS"} | Export-Csv -Path "C:\KMS-Events.csv" -NoTypeInformation

8. 常用错误代码速查

错误代码说明解决方法
0xC004F038KMS 激活阈值未达到部署更多客户端,等待达到阈值
0xC004F074客户端无法连接到 KMS 主机检查防火墙、DNS SRV 记录、KMS 服务器地址
0xC004F069KMS 主机密钥与产品版本不匹配安装正确的 KMS 主机密钥
0x80070005访问被拒绝(权限不足)以管理员身份运行命令
0x8007232BDNS 名称不存在(SRV 记录未找到)创建 DNS SRV 记录或手动指定 KMS 服务器
0x80072338DNS 查询失败检查 DNS 服务器设置和连通性
💡 完整错误代码列表

微软官方文档:KMS Activation Error Codes

8.1 客户端激活状态速查

状态说明处理方法
Licensed已激活无需处理
Grace Period宽限期(180 天内)检查 KMS 主机可用性
Notification需要激活检查客户端配置和 KMS 主机状态
OutOfGrace宽限期已过重新激活(slmgr.vbs /ato)
Non-Genuine非正版使用正版密钥重新安装