windows激活报错0x80070020或0x80041010-阿里云开发者社区

 知识中心     |      2020-06-23 00:00:00

作者:棋玉

问题现象

激活报错,slmgr /ato后报错代码类似如下:
image.png

排查步骤

1.运行命令行 slmgr /dlv 同样报错,说明是slmgr 本身命令有问题,不像是网络层面的问题

2.查看msinfo32, 发现报错,提示 winmgmt 服务有问题
image.png

3.重启winmgmt 服务,可以正常重启,说明winmgmt 服务本身正常,需要rebuild wmi 数据库。
image.png

4.按照以下步骤rebuild wmi 数据库(注:此操作可能会对环境产生影响,建议先进行快照)
windows Server 2008R2
右击cmd,选择以管理员身份运行,运行以下命令行:

sc config winmgmt start= disabled
net stop winmgmt /y
cd %windir%system32wbem
rename repository repository.old
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
wmiprvse /regserver 
sc config winmgmt start= auto
net start winmgmt
for /f %s in ('dir /b *.mof *.mfl') do mofcomp %s

Windows Server 2012及以后版本
右击cmd,选择以管理员身份运行,运行以下命令行:

sc config winmgmt start= disabled
net stop winmgmt /y
%systemdrive%
cd %windir%system32wbem
ren repository repository-backup
for /f %s in ('dir /b *.dll') do regsvr32 /s %s
sc config winmgmt start= Auto
net start winmgmt
dir /b *.mof *.mfl | findstr /v /i uninstall > moflist.txt & for /F %s in (moflist.txt) do mofcomp %s

5.之后成功激活。