在之前的文章中,我讲到我搭建了一个KMS激活服务器,但是呢,这个要么需要搭配脚本使用,要么需要搭配KMS激活软件比如HEU_KMS_Activator软件的自定义KMS服务器功能实现,所以整个过程相对繁琐,那我能不能更懒人化一些呢?答案是:能。

https://www.xiwangly.com/kms%e6%bf%80%e6%b4%bb%e6%9c%8d%e5%8a%a1%e8%af%95%e7%82%b9%e8%bf%90%e8%a1%8c.html

注:文章中的超链接均可点击,方便跳转到相应的网站

警告:在未经微软官方允许的情况下搭建此KMS服务可能会遭到版权申诉,本文章仅供学习,请勿用于非法用途!

背景

我所在的学校的机房经常有Windows和Office的激活问题,要么是因为KMS满180天到期了没有自动续期,要么是机房的电脑在发癫莫名其妙的掉了激活,而且一个一个的给每一台电脑激活很是麻烦(每一台电脑有影子系统,而且系统还是老掉牙的Windows 10 1809,我估摸着换系统 如果不借助PXE等工具 怕是得忙个半天都不一定给整个机房装好系统),Office的KMS激活期限是180天,所以装了影子系统,那个激活的证书密钥文件没有被更新,就会导致激活失效,而这个局域网的激活,就可以保证在连接了网络的情况下,不需要额外在Windows系统上安装软件,开机等个几秒实现自动激活

我们能不能把这个问题自动化呢,答案也是可以的

前置条件

微软官方的描述:https://learn.microsoft.com/zh-cn/windows-server/get-started/kms-create-host#prerequisites

首先我们需要一个路由器(或者再加一个网关,确保在一个子网或一个域内),

连接的路由器最好是OpenWrt系统(可以自己刷系统,我使用的路由器是红米的AC2100),

系统必须是Windows 10 LTSC(企业版)(Windows 7 VOL版的应该也行,但我没试过,Office 2016是最后一个兼容Windows 7的版本)
Office也必须是2021 LTSC版(企业版),且激活通道必须是Office企业长期版

只有企业版的Windows和Office才有通过Active Directory 域服务局域网查询SRV记录实现自动激活的功能
需要局域网内有vlmcsd服务的SRV DNS记录(局域网的路由器最好是OpenWrt系统,同属一个子网,且需要与一台部署了KMS服务的服务器连接)

如果路由器已经集成了vlmcsd,则可以跳过安装vlmcsd的步骤,如果还支持了DNS自动添加SRV记录,则添加SRV记录的操作部分都可以省了,有关于SRV记录的详细信息可以参阅RFC 2782: A DNS RR for specifying the location of services (DNS SRV)

先看一下我这个ImmortalWrt集成的KMS服务的启动脚本

#!/bin/sh /etc/rc.common
# Copyright (c) 2011-2015 OpenWrt.org

START=90

get_config() {
config_get_bool enabled $1 enabled 0
config_get autoactivate $1 autoactivate 1
}

add_vlmcs_entry() {
local new_hostname="$1"

uci -q batch <<-EOF >/dev/null
add dhcp srvhost
set dhcp.@srvhost[-1].srv=_vlmcs._tcp
set dhcp.@srvhost[-1].target=$new_hostname
set dhcp.@srvhost[-1].port=1688
set dhcp.@srvhost[-1].class=0
set dhcp.@srvhost[-1].weight=100
commit dhcp
EOF

/etc/init.d/dnsmasq restart
exit 0
}

start() {
config_load vlmcsd
config_foreach get_config vlmcsd
[ $enabled -eq 0 ] && exit 0
/usr/bin/vlmcsd -i /etc/vlmcsd.ini -L 0.0.0.0:1688
echo "KMS Server has started."

if [ $autoactivate -eq 1 ]; then
local HOSTNAME=`uci get system.@system[0].hostname`

local index=$(uci -q show dhcp grep "].srv='_vlmcs._tcp'") \
add_vlmcs_entry $HOSTNAME
index=${index#*[}
index=${index%]*}

local host_name=$(uci -q get dhcp.@srvhost[$index].target)

if [ "$HOSTNAME" != "$host_name" ]; then
uci delete dhcp.@srvhost[$index]
add_vlmcs_entry $HOSTNAME
fi
fi
}

stop() {
killall -q -9 vlmcsd
echo "KMS Server has stopped."
}

可以知道,它用到了uci工具(这是OpenWrt自带的工具,如果没有,则需要自行编译安装uci,教程可参考ubuntu安裝UCI的教程以及UCI的常用命令和API)来添加SRV记录(也可以使用其它工具管理DHCP/DNS服务),参考UCI系统

这是vlmcsd的配置文件,可以增加新的产品主密钥

#ePID/HwId设置为Windows显式
;Windows = 06401-00206-471-111111-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08

#ePID设置为Office2010(包含Visio和Project)显式
;Office2010 = 06401-00096-199-222222-03-1033-17763.0000-2822018

#ePID/HwId设置为Office2013(包含Visio和Project)显式
;Office2013 = 06401-00206-234-333333-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08

#ePID/HwId设置为Office2016(包含Visio和Project)显式
;Office2016 = 06401-00206-437-444444-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08

#ePID/HwId设置为Office2019(包含Visio和Project)显式
;Office2019 = 06401-00206-666-666666-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08

#ePID/HwId设置为Windows中国政府版 (Enterprise G/GN) 显式
;WinChinaGov = 06401-03858-000-555555-03-1033-17763.0000-2822018 / 01 02 03 04 05 06 07 08

#使用自定义TCP端口
;Port = 1688

#监听所有IPv4地址(默认端口1688)
;Listen = 0.0.0.0:1688

#监听所有IPv6地址(默认端口1688)
;Listen = [::]:1688

#程序启动时随机ePIDs(只有那些未显式指定的)
;RandomizationLevel = 1

#在ePIDs中使用特定区域 (1033 = 美国英语),即使ePID是随机的
;LCID = 1033

#设置最多4个同时工作(分叉进程或线程)
;MaxWorkers = 4

#闲置30秒后断开用户
;ConnectionTimeout = 30

#每次请求后立即断开客户端
;DisconnectClientsImmediately = yes

#写一个pid文件(包含vlmcsd的进程ID的文件)
;PidFile = /var/run/vlmcsd.pid

#写日志到/var/log/vlmcsd.log
;LogFile = /var/log/vlmcsd.log

#创建详细日志
;LogVerbose = true

#设置激活间隔2小时
;ActivationInterval = 2h

#设置更新间隔7天
;RenewalInterval = 7d

#运行程序的用户为vlmcsduser
;user = vlmcsduser

#运行程序的组为vlmcsdgroup
;group = vlmcsdgroup

#禁用或启用RPC的NDR64传输语法(默认启用)
;UseNDR64 = true

#禁用或启用RPC的绑定时间特性协商(默认启用)
;UseBTFN = true

搭建KMS服务器的部分可以借助我的Docker版Windows KMS激活服务端搭建KMS激活服务,由沧水的KMS服务修改而来

先拉取镜像

docker pull xiwangly/kms

运行,需要放行TCP 1688端口

docker run -itd --name=kms -p 1688:1688 --restart=always xiwangly/kms

使用下面的Dockerfile可以构建此镜像

FROM alpine:latest

ENV TZ Asia/Shanghai

RUN /bin/sh -c 'apk --no-cache add net-tools procps wget iproute2 unzip tzdata;\
wget -q --no-check-certificate https://pan.xiwangly.com/d/%E6%9C%AC%E5%9C%B0%E7%A3%81%E7%9B%98/vlmcsd-2018.zip;\
unzip -q vlmcsd-2018.zip -d /usr/local/;\
ln -sv /usr/local/vlmcsd-2018/ /usr/local/KMS;\
chmod +x /usr/local/KMS/binaries/Linux/intel/static/*;\
apk del wget unzip;\
rm vlmcsd-2018.zip;\
/usr/local/KMS/binaries/Linux/intel/static/vlmcsd-x64-musl-static;'

ENTRYPOINT /usr/local/KMS/binaries/Linux/intel/static/vlmcsd-x64-musl-static;/bin/sh

验证KMS服务器是否有效:KMS服务器检测

当然,是不是一定要用Linux系统跑KMS服务呢,不是的,也可以通过Windows Server系统添加正向查找区域的方式实现(这个我没有试过,参考文章DNS添加KMS SRV记录激动激活,不过可以肯定的是这个比Linux搭建vlmcsd服务再弄SRV记录要更简单)

Cloudflare的SRV记录(指向了我的服务器)

其它方法

如果不能实现Active Directory 域服务局域网查询SRV记录实现自动激活,还可以借助Windows 的任务计划程序(位于%windir%\system32\taskschd.msc)运行激活脚本实现

科普

Windows系统有很多版本,参考windows各个版本 有什么区别

Office软件有很多版本,我们通常所说的Office指微软公司的Office产品(Microsoft Office),而不是国内金山公司出品的WPS软件

Office有三种安装类型:即点即用(简称C2R)和Microsoft Windows Installer(简称MSI),第三种类型是从 Microsoft Store 应用商店安装 Office

零售版的Office一般都是C2R安装类型的,而批量版的Office一般都是MSI安装类型的,(Windows 10 家庭和学生版)系统安装后自带都是应用商店类型的

不同的安装类型是不能共存的

微软Office每隔几年就是推出一个年代版本,比如现在常见的有Office2003、2007、2010、2013、2016、2019和2021,都是以年代命名的

这些以年代命名的office版本一旦发布后,功能就基本定型了,也就是说微软不再对其进行功能更新,只进行安全更新

这里有一个比较特殊的版本就是Office365,Office365是一个长期维护版本,一些新功能都会先在Office365中更新,然后经过两年的市场验证,一旦功能稳定,这个365就会衍生出一个年代版本的Office,循环往复,我们就可以看到有Office2016、2019等年代版本的Office

所以从功能上来说,Office 365>Office 2021>Office 2019>Office 2016>Office 2013>Office 2010……

从发行版本上区分:比如Office2016有8个版本,分别是:个人版、家庭学生版、家庭商业版、标准版、小型企业版、专业版、专业增强版和企业版;按安装包来分又有零售版和批量版(也称大客户版),不同类型的Office激活方式也不同,但是相同版本号的Office的功能是一样的,比如零售版的Office2016和批量版的Office 2016功能是一模一样的

如何查看我使用的是哪个版本的 Office:

  1. 打开任何 Office 应用程序,如 Word 或 Excel,然后选择帐户注意: 如果你没有看到帐户或你已打开一个文件或文档,请从菜单中,选择文件,然后从左侧的列表中选择帐户帮助
  2. 在“产品信息”下,你将看到你的 Office 产品名,在某些情况下,还可看到完整的版本号。包含用户和产品信息的帐户页面
    • 1 - 产品名,例如 Microsoft 365 专业增强版或 Office 家庭和学生版。
    • 2 - 版本号,其中包括版本、 内部版本号和如“即点即用”或 Windows 应用商店等安装类型。
  3. 有关详细信息,如位版本,选择关于 Excel。 此时会打开一个对话框,显示完整的版本号和位版本 (32 位 或 64 位)。

附表

微软官方公开序列号

各操作系统KMS激活方式所对应的激活码

Windows Server 半年频道版本

Windows Server 版本 1809

操作系统版本

KMS 客户端安装密钥

Windows Server Datacenter

6NMRW-2C8FM-D24W7-TQWMY-CWH2D

Windows Server Standard

N2KJX-J94YW-TQVFB-DG9YT-724CC

Windows Server 版本 1803

操作系统版本

KMS 客户端安装密钥

Windows Server Datacenter

2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG

Windows Server Standard

PTXN8-JFHJM-4WC78-MPCBR-9W4KR

Windows Server 版本 1709

操作系统版本

KMS 客户端安装密钥

Windows Server Datacenter

6Y6KB-N82V8-D8CQV-23MJW-BWTG6

Windows Server Standard

DPCNP-XQFKJ-BJF7R-FRC8D-GF6G4

Windows Server LTSC/LTSB 版本

Windows Server 2019

操作系统版本

KMS 客户端安装密钥

Windows Server 2019 Datacenter

WMDGN-G9PQG-XVVXX-R3X43-63DFG

Windows Server 2019 Standard

N69G4-B89J2-4G8F4-WWYCC-J464C

Windows Server 2019 Essentials

WVDHN-86M7X-466 P 6-VHXV7-YY726

Windows Server 2016

操作系统版本

KMS 客户端安装密钥

Windows Server 2016 Datacenter

CB7KF-BWN84-R7R2Y-793K2-8XDDG

Windows Server 2016 Standard

WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY

Windows Server 2016 Essentials

JCKRF-N37P4-C2D82-9YXRT-4M63B

Windows 10 中,所有受支持的半年频道版本

操作系统版本

KMS 客户端安装密钥

Windows 10 专业版

W269N-WFGWX-YVC9B-4J6C9-T83GX

Windows 10 专业版 N

MH37W-N47XK-V7XM9-C7227-GCQG9

Windows 10 专业工作站

NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J

Windows 10 专业工作站 N

9FNHH-K3HBT-3W4TD-6383H-6XYWF

Windows 10 专业教育版

6TP4R-GNPTD-KYYHQ-7B7DP-J447Y

Windows 10 专业教育版 N

YVWGF-BXNMC-HTQYQ-CPQ99-66QFC

Windows 10 教育版

NW6C2-QMPVW-D7KKK-3GKT6-VCFB2

Windows 10 教育版 N

2WH4N-8QGBV-H22JP-CT43Q-MDWWJ

Windows 10 企业版

NPPR9-FWDCX-D2C8J-H872K-2YT43

Windows 10 企业版 N

DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4

Windows 10 企业版 G

YYVX9-NTFWV-6MDM3-9PT4T-4M68B

Windows 10 企业版 G N

44RPN-FTY23-9VTTB-MP9BX-T84FV

Windows 10 LTSC/LTSB 版本

Windows 10 LTSC 2019

操作系统版本

KMS 客户端安装密钥

Windows 10 企业版 LTSC 2019

M7XTQ-FN8P6-TTKYV-9D4CC-J462D

Windows 10 企业版 N LTSC 2019

2NFX-8DJQP-P6BBQ-THF9C-7CG2H

Windows 10 LTSB 2016

操作系统版本

KMS 客户端安装密钥

Windows 10 企业版 LTSB 2016

DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ

Windows 10 企业版 N LTSB 2016

FFDN-GRT3P-VKWWX-X7T3R-8B639

Windows 10 LTSB 2015

操作系统版本

KMS 客户端安装密钥

Windows 10 企业版 2015 长期服务

WNMTR-4C88C-JK8YV-HQ7T2-76DF9

Windows 10 企业版 2015 长期服务 N

2F77B-TNFGY-69QQF-B8YKP-D69TJ

Windows Server 早期版本

Windows Server 2012 R2

操作系统版本

KMS 客户端安装密钥

Windows Server 2012 R2 Server Standard

D2N9P-3P6X9-2R39C-7RTCD-MDVJX

WindowsServer 2012 R2 Datacenter

W3GGN-FT8W3-Y4M27-J84CP-Q3VJ9

WindowsServer 2012 R2 Essentials

KNC87-3J2TX-XB4WP-VCPJV-M4FWM

Windows Server 2012

操作系统版本

KMS 客户端安装密钥

Windows Server 2012

BN3D2-R7TKB-3YPBD-8DRP2-27GG4

Windows Server 2012 N

8N2M2-HWPGY-7PGT9-HGDD8-GVGGY

Windows Server 2012 单语言版

2WN2H-YGCQR-KFX6K-CD6TF-84YXQ

Windows Server 2012 特定国家/地区版

4K36P-JN4VD-GDC6V-KDT89-DYFKP

Windows Server 2012 Server Standard

XC9B7-NBPP2-83J2H-RHMBY-92BT4

Windows Server 2012 MultiPoint Standard

HM7DN-YVMH3-46JC3-XYTG7-CYQJJ

Windows Server 2012 MultiPoint Premium

XNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G

Windows Server 2012 Datacenter

48HP8-DN98B-MYWDG-T2DCC-8W83P

Windows Server 2008 R2

操作系统版本

KMS 客户端安装密钥

Windows Server 2008 R2 Web 版

6TPJF-RBVHG-WBW2R-86QPH-6RTM4

Windows Server 2008 R2 HPC 版

TT8MH-CG224-D3D7Q-498W2-9QCTX

WindowsServer 2008 R2 Standard

YC6KT-GKW9T-YTKYR-T4X34-R7VHC

WindowsServer 2008 R2 企业版

489J6-VHDMP-X63PK-3K798-CPX3Y

WindowsServer 2008 R2 Datacenter

74YFP-3QFB3-KQT8W-PMXWJ-7M648

面向基于 Itanium 系统的 Windows Server 2008 R2

GT63C-RJFQ3-4GMB6-BRFB9-CB83V

Windows Server 2008

操作系统版本

KMS 客户端安装密钥

Windows Web Server 2008

WYR28-R7TFJ-3X2YQ-YCY4H-M249D

Windows Server 2008 Standard

TM24T-X9RMF-VWXK6-X8JC9-BFGM2

不带 Hyper-V 的 Windows Server 2008 Standard

W7VD6-7JFBR-RX26B-YKQ3Y-6FFFJ

Windows Server 2008 企业版

YQGMW-MPWTJ-34KDK-48M3W-X4Q6V

不带 Hyper-V 的 Windows Server 2008 企业版

39BXF-X8Q23-P2WWT-38T2F-G3FPG

Windows Server 2008 HPC

RCTX3-KWVHP-BR6TB-RB6DM-6X7HP

Windows Server 2008 Datacenter

7M67G-PC374-GR742-YH8V4-TCBY3

不带 Hyper-V 的 Windows Server 2008 Datacenter

22XQ2-VRXRG-P8D42-K34TD-G3QQC

面向基于 Itanium 系统的 Windows Server 2008

4DWFP-JF3DJ-B7DTH-78FJB-PDRHK

早期版本的 Windows

Windows 8.1

操作系统版本

KMS 客户端安装密钥

Windows 8.1 专业版

GCRJD-8NW9H-F2CDX-CCM8D-9D6T9

Windows 8.1 专业版 N

HMCNV-VVBFX-7HMBH-CTY9B-B4FXY

Windows 8.1 企业版

MHF9N-XY6XB-WVXMC-BTDCT-MKKG7

Windows 8.1 企业版 N

TT4HM-HN7YT-62K67-RGRQJ-JFFXW

Windows 8

操作系统版本

KMS 客户端安装密钥

Windows 8 专业版

NG4HW-VH26C-733KW-K6F98-J8CK4

Windows 8 专业版 N

XCVCF-2NXM9-723PB-MHCB7-2RYQQ

Windows 8 企业版

32JNW-9KQ84-P47T8-D8GGY-CWCK7

Windows 8 企业版 N

JMNMF-RHW7P-DMY6X-RF3DR-X2BQT

Windows 7

操作系统版本

KMS 客户端安装密钥

Windows 7 专业版

FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4

Windows 7 专业版 N

MRPKT-YTG23-K7D7T-X2JMM-QY7MG

Windows 7 专业版 E

W82YF-2Q76Y-63HXB-FGJG9-GF7QX

Windows7 企业版

33PXH-7Y6KF-2VJC9-XBBR8-HVTHH

Windows 7 企业版 N

YDRBP-3D83W-TY26F-D46B2-XCKRJ

Windows 7 企业版 E

C29WB-22CC8-VJ326-GHFJW-H9DH4

花絮

我反复装了100+次各种版本的Windows和各种版本的Office,只为了实验……

注:

如果使用了2016的激活证书,则PowerPoint不能创建平滑切换效果,在 PowerPoint 中使用平滑切换

激活通道决定了使用LTSC还是专业版等的激活证书或者是导致极少部分功能的显示位置不同

若要创建平滑切换,需要 PowerPoint 网页版、PowerPoint 2019 或 Microsoft 365 专属 PowerPoint。 其他版本的 PowerPoint(如下所示)可以播放平滑切换,但无法创建它们。 我们建议你获取 Office 365 订阅,了解最新的 Office 功能,包括平滑。

PowerPoint 版本

你可以用平滑功能来做些什么

PowerPoint for Office 365,1511 版或更新版本PowerPoint for Office 365 for Mac,15.19 版或更新版本

创建和播放平滑切换

PowerPoint 2021 PowerPoint 2021 for Mac

创建和播放平滑切换

PowerPoint 2019PowerPoint 2019 for Mac

创建和播放平滑切换

PowerPoint 2016,通过_即点即用_1
版本 1511(内部版本 16.0.4358.1000)或更新版本安装

播放平滑切换

PowerPoint 2016,通过 _Microsoft 安装程序_1 (MSI)
内部版本 16.0.4358.1000 或更新版本安装,已安装Office更新2

播放平滑切换

PowerPoint 2016 for MacPowerPoint 2013PowerPoint for Mac 2011PowerPoint 2010PowerPoint 2007

播放淡出切换,而不是平滑切换。

PowerPoint 网页版

创建和播放平滑切换

PowerPoint for AndroidPowerPoint for iOSPowerPoint Mobile for Windows

创建和播放平滑切换在这些移动应用中_创建_平滑切换需要Microsoft 365订阅。

2 必须安装以下 Office 更新。 没有它们,PowerPoint 2016 无法播放平滑切换,而会播放淡出切换。

我的 Office 是即点即用还是基于 MSI?

  1. 打开 Office 应用程序,如 Outlook 或 Word。
  2. 转到“文件”>“帐户”或“Office 帐户”。
  3. 如果出现“更新选项”项,则为即点即用安装。 如果未显示该项,则为基于 MSI 的安装。CTR 与 MSI

如果用过 Keynote 中的“神奇移动”功能,会发现平滑功能可以做同样的事情。