手动重建受损WMI网络计数器数据库需分三步:先检查并禁用注册表中各网络服务的DisablePerformanceCounters值为0;再执行lodctr /R和winmgmt /resyncperf重载计数器;最后在WMI仓库损坏时,清空Repository并重新编译nettcpip.mof等核心MOF文件。
手动重建受损的 wmi 网络计数器数据库,本质是修复 windows 性能计数器(performance counters)与 wmi 的联动机制。网络计数器(如 tcpv4、udpv4、network interface、nic 等)属于可扩展计数器(extensible counters),其定义和映射依赖两个关键部分:注册表中的 perflib 数据结构 + wmi 存储库中对应的 cim 类(如 win32_perfformatteddata_tcpip_tcpv4)。当它们不一致或损坏时,会出现“性能监视器里看不到网络计数器”“get-ciminstance win32_perfformatteddata_tcpip_tcpv4 报错 0x80041010”“netstat 类数据为空”等问题。
确认网络计数器是否被禁用或注册异常
很多问题其实不是数据库损坏,而是被意外禁用:
- 打开注册表编辑器(
regedit),定位到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Performance
检查是否存在DisablePerformanceCountersDWORD 值;若存在且值非0(如为 1、2 或 4),请双击修改为0 - 同样检查以下路径(覆盖常见网络组件):
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\PerformanceHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ndis\PerformanceHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\{NIC GUID}\Performance(如存在) - 确保
PerfLib主键未被破坏:
查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Perflib\009下是否有大量空值或缺失的Counter/Help字符串子项
重新加载全部网络相关性能计数器
这是最常用、最安全的修复动作,无需重启,适用于多数因注册丢失导致的“计数器空白”问题:
- 以管理员身份打开命令提示符
- 依次执行以下两条命令(分别处理 64 位和 32 位系统组件):
cd /d %windir%\system32 && lodctr /Rcd /d %windir%\sysWOW64 && lodctr /R - 执行 WMI 计数器同步:
winmgmt /resyncperf - 重启两个关键服务:
net stop pla && net start planet stop winmgmt && net start winmgmt
强制重建 WMI 存储库并补全网络类定义
当 lodctr /R 无效,或 Get-WmiObject 明确报 “Invalid class”(如 0x80041010),说明 WMI 仓库本身已损坏,需重建并重编译网络 MOF 文件:
- 停止 WMI 服务:
net stop winmgmt - 备份并清空仓库:
cd /d %windir%\system32\wbem && ren Repository Repository.bak - 启动服务触发重建:
net start winmgmt(等待约 30 秒,新Repository文件夹将自动生成) - 重新注册所有标准 MOF 文件(含网络类):
for %i in (*.mof) do mofcomp %ifor %i in (en-us\*.mfl) do mofcomp en-us\%i - 特别补充网络核心 MOF(如有):
mofcomp "%windir%\system32\wbem\wmi.mof"mofcomp "%windir%\system32\wbem\nettcpip.mof"
验证网络计数器是否恢复可用
修复后必须交叉验证三层通路是否连通:
- 在性能监视器(
perfmon)中添加计数器,确认TCPv4、Network Interface等对象可列出且数值实时更新 - 在 PowerShell 中运行:
Get-CimInstance Win32_PerfFormattedData_Tcpip_TCPv4 | Select -First 1
应返回非空对象(如ConnectionsActive有数值) - 检查 WMI 查询基础能力:
wmic path Win32_PerfFormattedData_Tcpip_TCPv4 get ConnectionsActive - 如仍失败,可运行
winmgmt /verifyrepository确认仓库一致性;若不一致,再执行winmgmt /resetrepository











