在之前的文章中,我讲到我搭建了一个KMS激活服务器,但是呢,这个要么需要搭配脚本使用,要么需要搭配KMS激活软件比如HEU_KMS_Activator软件的自定义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 [email protected][-1].srv=_vlmcs._tcp
		set [email protected][-1].target=$new_hostname
		set [email protected][-1].port=1688
		set [email protected][-1].class=0
		set [email protected][-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 [email protected][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 [email protected][$index].target)

		if [ "$HOSTNAME" != "$host_name" ]; then
			uci delete [email protected][$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.top/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记录要更简单)

其它方法

如果不能实现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 Datacenter6NMRW-2C8FM-D24W7-TQWMY-CWH2D
Windows Server StandardN2KJX-J94YW-TQVFB-DG9YT-724CC

Windows Server 版本 1803

操作系统版本KMS 客户端安装密钥
Windows Server Datacenter2HXDN-KRXHB-GPYC7-YCKFJ-7FVDG
Windows Server StandardPTXN8-JFHJM-4WC78-MPCBR-9W4KR

Windows Server 版本 1709

操作系统版本KMS 客户端安装密钥
Windows Server Datacenter6Y6KB-N82V8-D8CQV-23MJW-BWTG6
Windows Server StandardDPCNP-XQFKJ-BJF7R-FRC8D-GF6G4

Windows Server LTSC/LTSB 版本

Windows Server 2019

操作系统版本KMS 客户端安装密钥
Windows Server 2019 DatacenterWMDGN-G9PQG-XVVXX-R3X43-63DFG
Windows Server 2019 StandardN69G4-B89J2-4G8F4-WWYCC-J464C
Windows Server 2019 EssentialsWVDHN-86M7X-466 P 6-VHXV7-YY726

Windows Server 2016

操作系统版本KMS 客户端安装密钥
Windows Server 2016 DatacenterCB7KF-BWN84-R7R2Y-793K2-8XDDG
Windows Server 2016 StandardWC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
Windows Server 2016 EssentialsJCKRF-N37P4-C2D82-9YXRT-4M63B

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

操作系统版本KMS 客户端安装密钥
Windows 10 专业版W269N-WFGWX-YVC9B-4J6C9-T83GX
Windows 10 专业版 NMH37W-N47XK-V7XM9-C7227-GCQG9
Windows 10 专业工作站NRG8B-VKK3Q-CXVCJ-9G2XF-6Q84J
Windows 10 专业工作站 N9FNHH-K3HBT-3W4TD-6383H-6XYWF
Windows 10 专业教育版6TP4R-GNPTD-KYYHQ-7B7DP-J447Y
Windows 10 专业教育版 NYVWGF-BXNMC-HTQYQ-CPQ99-66QFC
Windows 10 教育版NW6C2-QMPVW-D7KKK-3GKT6-VCFB2
Windows 10 教育版 N2WH4N-8QGBV-H22JP-CT43Q-MDWWJ
Windows 10 企业版NPPR9-FWDCX-D2C8J-H872K-2YT43
Windows 10 企业版 NDPH2V-TTNVB-4X9Q3-TJR4H-KHJW4
Windows 10 企业版 GYYVX9-NTFWV-6MDM3-9PT4T-4M68B
Windows 10 企业版 G N44RPN-FTY23-9VTTB-MP9BX-T84FV

Windows 10 LTSC/LTSB 版本

Windows 10 LTSC 2019

操作系统版本KMS 客户端安装密钥
Windows 10 企业版 LTSC 2019M7XTQ-FN8P6-TTKYV-9D4CC-J462D
Windows 10 企业版 N LTSC 20192NFX-8DJQP-P6BBQ-THF9C-7CG2H

Windows 10 LTSB 2016

操作系统版本KMS 客户端安装密钥
Windows 10 企业版 LTSB 2016DCPHK-NFMTC-H88MJ-PFHPY-QJ4BJ
Windows 10 企业版 N LTSB 2016FFDN-GRT3P-VKWWX-X7T3R-8B639

Windows 10 LTSB 2015

操作系统版本KMS 客户端安装密钥
Windows 10 企业版 2015 长期服务WNMTR-4C88C-JK8YV-HQ7T2-76DF9
Windows 10 企业版 2015 长期服务 N2F77B-TNFGY-69QQF-B8YKP-D69TJ

Windows Server 早期版本

Windows Server 2012 R2

操作系统版本KMS 客户端安装密钥
Windows Server 2012 R2 Server StandardD2N9P-3P6X9-2R39C-7RTCD-MDVJX
WindowsServer 2012 R2 DatacenterW3GGN-FT8W3-Y4M27-J84CP-Q3VJ9
WindowsServer 2012 R2 EssentialsKNC87-3J2TX-XB4WP-VCPJV-M4FWM

Windows Server 2012

操作系统版本KMS 客户端安装密钥
Windows Server 2012BN3D2-R7TKB-3YPBD-8DRP2-27GG4
Windows Server 2012 N8N2M2-HWPGY-7PGT9-HGDD8-GVGGY
Windows Server 2012 单语言版2WN2H-YGCQR-KFX6K-CD6TF-84YXQ
Windows Server 2012 特定国家/地区版4K36P-JN4VD-GDC6V-KDT89-DYFKP
Windows Server 2012 Server StandardXC9B7-NBPP2-83J2H-RHMBY-92BT4
Windows Server 2012 MultiPoint StandardHM7DN-YVMH3-46JC3-XYTG7-CYQJJ
Windows Server 2012 MultiPoint PremiumXNH6W-2V9GX-RGJ4K-Y8X6F-QGJ2G
Windows Server 2012 Datacenter48HP8-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 StandardYC6KT-GKW9T-YTKYR-T4X34-R7VHC
WindowsServer 2008 R2 企业版489J6-VHDMP-X63PK-3K798-CPX3Y
WindowsServer 2008 R2 Datacenter74YFP-3QFB3-KQT8W-PMXWJ-7M648
面向基于 Itanium 系统的 Windows Server 2008 R2GT63C-RJFQ3-4GMB6-BRFB9-CB83V

Windows Server 2008

操作系统版本KMS 客户端安装密钥
Windows Web Server 2008WYR28-R7TFJ-3X2YQ-YCY4H-M249D
Windows Server 2008 StandardTM24T-X9RMF-VWXK6-X8JC9-BFGM2
不带 Hyper-V 的 Windows Server 2008 StandardW7VD6-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 HPCRCTX3-KWVHP-BR6TB-RB6DM-6X7HP
Windows Server 2008 Datacenter7M67G-PC374-GR742-YH8V4-TCBY3
不带 Hyper-V 的 Windows Server 2008 Datacenter22XQ2-VRXRG-P8D42-K34TD-G3QQC
面向基于 Itanium 系统的 Windows Server 20084DWFP-JF3DJ-B7DTH-78FJB-PDRHK

早期版本的 Windows

Windows 8.1

操作系统版本KMS 客户端安装密钥
Windows 8.1 专业版GCRJD-8NW9H-F2CDX-CCM8D-9D6T9
Windows 8.1 专业版 NHMCNV-VVBFX-7HMBH-CTY9B-B4FXY
Windows 8.1 企业版MHF9N-XY6XB-WVXMC-BTDCT-MKKG7
Windows 8.1 企业版 NTT4HM-HN7YT-62K67-RGRQJ-JFFXW

Windows 8

操作系统版本KMS 客户端安装密钥
Windows 8 专业版NG4HW-VH26C-733KW-K6F98-J8CK4
Windows 8 专业版 NXCVCF-2NXM9-723PB-MHCB7-2RYQQ
Windows 8 企业版32JNW-9KQ84-P47T8-D8GGY-CWCK7
Windows 8 企业版 NJMNMF-RHW7P-DMY6X-RF3DR-X2BQT

Windows 7

操作系统版本KMS 客户端安装密钥
Windows 7 专业版FJ82H-XT6CR-J8D7P-XQJJ2-GPDD4
Windows 7 专业版 NMRPKT-YTG23-K7D7T-X2JMM-QY7MG
Windows 7 专业版 EW82YF-2Q76Y-63HXB-FGJG9-GF7QX
Windows7 企业版33PXH-7Y6KF-2VJC9-XBBR8-HVTHH
Windows 7 企业版 NYDRBP-3D83W-TY26F-D46B2-XCKRJ
Windows 7 企业版 EC29WB-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 中的“神奇移动”功能,会发现平滑功能可以做同样的事情。


本当の声を響かせてよ