未能初始化所有需要的wmi类别 异常修复

近期遇到部分WINDOWS系统WMI异常,导致部分程序无法正常运行。本文记录此类现象及解决方法。

右键点击我的电脑选“管理”,进入计算机管理窗口,选中“服务和应用程序” - "WMI控件",如下图:

右键点击“WMI控件”,点“属性”,进入WMI控件属性窗口,正常的窗口是下面这样的:

但WMI出现问题时,该属性窗口是这样的:

出现这样的情况,说明本机的WMI环境被破坏,会影响到访问WMI的程序的正常运行。所以,我们通过下面的方法来修复。

1.用管理员权限打开命令行。

2.依次执行下面的脚本命令:


cd C:\Windows\System32\wbem
for /f %s in ('dir /b *.mof *.mfl') do mofcomp %s
for %i in (*.dll) do regSvr32 -s %i
net stop winmgmt /y
net start winmgmt
gpupdate /force

执行成功后,WMI就已经被修复了。

如果希望写成一个批处理文件,内容需要稍微改动一点,如下:

REM REPAIR WMI EXCEPTION
REM BY SW 2024.07.25

c:
cd C:\Windows\System32\wbem
for /f %%s in ('dir /b *.mof *.mfl') do mofcomp %%s
for %%i in (*.dll) do regSvr32 -s %%i
net stop winmgmt /y
net start winmgmt
gpupdate /force

区别就在于cmd命令行下变量用%s即可,但在bat文件中,就要改为%%s。

参考链接:

windows - WMI Invalid class but "WMI repository is consistent" - Stack Overflow

WMI: Missing or Failing WMI Providers or Invalid WMI Class - Microsoft Community Hub

### 关于 PcapDotNet.Core.Extensions LivePacketDeviceExtensions 类中的 GetMacAddressWmi 和 GetMacAddress 方法 当遇到 `LivePacketDeviceExtensions` 中的 `GetMacAddressWmi` 或 `GetMacAddress` 方法导致程序崩溃的情况,通常是因为 WMI 查询失败或是设备不支持某些操作。为了处理这类异常并提高应用稳定性,建议采取以下措施: - **捕获特定异常**:围绕调用这些方法的地方加入 try-catch 块来捕捉可能发生的异常,并提供友好的错误提示给用户[^1]。 ```csharp try { var macAddress = device.GetMacAddress(); } catch (Exception ex) { Console.WriteLine($"获取MAC地址时发生错误: {ex.Message}"); } ``` - **验证网络接口状态**:在尝试访问 MAC 地址之前先确认目标网卡处于活动状态并且可以正常工作[^2]。 - **更新库版本**:确保使用的 PcapDotNet 库是最新的稳定版,旧版本可能存在已知缺陷影响功能正常使用[^3]。 对于 `RTKAutoSwitchTool.Views.TabGeneral` 构造函数引发的问题,则可能是由于初始化过程中未能正确加载资源或设置了非法参数所引起的。针对这种情况可考虑如下方案: - **简化构造逻辑**:减少构造器内的复杂度,将耗时的任务移到后台线程执行或将它们推迟到首次实际需要的时候再做初始化[^4]。 - **日志记录与调试信息输出**:增加详细的日志打印语句帮助定位具体哪一步骤出现了问题,便于后续排查和修复[^5]。 如果上述调整仍无法解决问题,推荐通过 Visual Studio 的调试工具逐步跟踪代码执行流程,观察变量值的变化情况,从而更精准地找出根本原因所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值