首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >kms server成功率提升优化

kms server成功率提升优化

原创
作者头像
Windows技术交流
修改2024-11-12 11:09:31
修改2024-11-12 11:09:31
3530
举报
文章被收录于专栏:Windows技术交流Windows技术交流

背景:kms server成功率低,排查发现是HKLM\SYSTEM\WPA\这个路径的注册表特别大,影响了服务端效率。

这个是微软KMS Server设计问题,单线程 + 注册表无限累计,最后就越来越慢,加服务器只是延缓问题发生时间,实际上最好是定期清理,且WPA注册表提权操作不了,只能离线winpe维护。

代码语言:txt
复制
wget http://download.microsoft.com/download/win2000platform/WebPacks/1.00.0.1/NT5/EN-US/Dureg.exe -Outfile c:\windows\dureg.exe

下载的是一个安装文件Dureg.exe,双击安装后在C:\Program Files (x86)\Resource Kit\下面会产生一个dureg.exe,这个dureg.exe你可以复制到C:\Windows\,这样就不用添加环境变量了。

代码语言:txt
复制
dureg.exe /lm "SYSTEM\WPA"

执行这句命令,如果得到的数字大于3000W就该考虑在winpe救援模式中清理HKLM\SYSTEM\WPA\*

这个路径的注册表有特点:

"HKLM\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-xxxxxx"

代码语言:txt
复制
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\WPA]
[HKEY_LOCAL_MACHINE\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-1]
[HKEY_LOCAL_MACHINE\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-2]
[HKEY_LOCAL_MACHINE\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-3]
……
[HKEY_LOCAL_MACHINE\SYSTEM\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-999999]

在win11pe里安装powershell后,用powershell remove命令删太慢了,对比之下还是reg.exe命令和图形界面操作快

代码语言:txt
复制
logtime begin
Remove-Item -Path "HKLM:\aaaaa\WPA\8DEC0AF1-0341-4b93-85CD-72606C2DF94C-7P-*"
logtime end
代码语言:txt
复制
logtime begin
reg import cleanWPA-aaaaa.reg
logtime end

代码语言:txt
复制
wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/PowerShell-7.4.5-win-x64.zip -O X:\Users\Default\Desktop\PowerShell-7.4.5-win-x64.zip
下载后解压
wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/cleanWPA-aaaaa.7z -O X:\Users\Default\Desktop\cleanWPA-aaaaa.7z (只留了根,一个子项都没留)
下载后解压
wget http://windows-1251783334.cos.ap-shanghai.myqcloud.com/logtime.exe -O X:\Windows\logtime.exe
代码语言:txt
复制
dureg.exe命令是微软查看注册表量的命令行工具,放到c:\windows\目录就可以直接调用,用法:
dureg /lm "SYSTEM\WPA"
显示的数字用来表征注册表量的多少,简单换算的话,得到的数字/1024/1024*3.5大约就是HKLM\SYSTEM\WPA\注册表导出的大小(单位:MB)
dureg /lm "SYSTEM\WPA"得到的数字超过3000W就该考虑清理注册表了,此时导出的WPA注册表大约是100MB大小,这种量级一般读取就比较卡了,会影响激活效率

步骤:

1、进入system用户的winpe

在regedit.exe里或Registry Workshop里加载注册表(位置在原系统\Windows\System32\config\目录下SYSTEM文件,文件名就是SYSTEM,没有后缀)

操作之前先备份原系统\Windows\System32\config\目录

2、Registry Workshop其实调用的就是regedit.exe,Registry Workshop界面上也是鼠标放在HKEY_LOCAL_MACHINE上然后点"文件"→"加载配置单元"

加载的时候需要起名字,名字简单点aaaaa或bbbbb

加载过程持续若干分钟,耐心等待

加载过程持续若干分钟,耐心等待

加载过程持续若干分钟,耐心等待

代码语言:txt
复制
下载查看耗时的命令行放到X:\Windows\:http://windows-1251783334.cos.ap-shanghai.myqcloud.com/logtime.exe
logtime.exe begin
加载配置单元(注意具体化盘符):reg load "HKLM\aaaaa" "d:\windows\system32\config\SYSTEM"
下载并解压:http://windows-1251783334.cos.ap-shanghai.myqcloud.com/cleanWPA-aaaaa.7z(只留了根,一个子项都没留)
导入.reg文件删除WPA下面的子项:reg import cleanWPA-aaaaa.reg
卸载配置单元:reg unload "HKLM\aaaaa"
logtime.exe end
事实证明,用reg.exe命令加载会快很多(一般2分钟内)。

3、展开aaaaa或bbbbb下的WPA,在右侧全选删除即可,删除后鼠标点在aaaaa或bbbbb上,然后点"文件"→"卸载配置单元"

展开过程持续若干分钟,耐心等待

展开过程持续若干分钟,耐心等待

展开过程持续若干分钟,耐心等待

右键删除的过程持续若干分钟,耐心等待

右键删除的过程持续若干分钟,耐心等待

右键删除的过程持续若干分钟,耐心等待

等3分钟左右如果还是未响应,用regedit命令查看是否已经删完了,是的话,结束Registry Workshop然后重新打开以卸载配置单元或者从regedit里卸载配置单元

注意不要从WPA根上删,从根上删了后重新建的会有权限出入(正常的有trustedinstaller和sppsvc权限,重新建的有system权限没有用),导致sspsvc服务(software protection)启动不了,从而执行slmgr命令报Error: 0xC0000022

Error: 0xC0000022 On a computer running Microsoft Windows non-core edition, run 'slui.exe 0x2a 0xC0000022' to display the error text.

The Software Protection service terminated with the following error:

Access is denied.

The Software Protection service failed to start. 0x80070005

4、退出winpe,进入系统后相当于一台新kms server,首次激活需要5台客户端触发,否则报错0xC004F038

https://learn.microsoft.com/zh-cn/office/troubleshoot/administration/0xc004f038-computer-not-activate

首次激活,需要至少5台客户端去触发

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档