现象描述:
1.电脑上任务管理器可以正常使用
2.taskkill /?命令可以正常运行
3.使用tasklist命令时会出错的,错误是“错误:无效类”
4.使用taskkill进程会出错,错误是“错误:无效类”或者是“错误:找不到”,但是在任务管理器可以看到要kill的进程
调查过程:
1.首先怀疑是系统文件损坏,使用sfc /scannow检查系统文件并未发现错误
2.使用:for %1 in (%windir%\system32*.dll) do regsvr32.exe /s %1 重新注册dll后未解决该问题
3.进一步调查怀疑是wmi损坏导致的,使用wbemtest对该怀疑进行了验证,操作如下:
(1)命令行中运行wbemtest,出现如下界面
(2)点击连接,在命名空间中输入root\cimv2,点击连接
(3)出现如下界面后,点击查询
(4)在输入查询中输入如下内容:select * from win32_process 点击应用
(5)若是WMI没有问题,则会出现如下界面
本次本文章解决以下场景:
通过该现象可以确认是WMI损坏导致的这个问题
解决办法:
1.点击开始,点击运行,输入services.msc后回车。
2. 右键点击 Windows Management Instrumentation 服务,点击属性。
3. 在General 栏上,设置启动类型为 Disable 然后点击确定。
4. 右键点击Windows Management Instrumentation 服务,并点击停止。(如果服务已经停止的话,请跳过该步骤)
5. 定位到%windir%\system32\wbem目录。
6. 将子文件夹Repository 重命名为Repository.old。
7. 创建一个批处理文件,包含下面的信息:
cd %windir%\system32\wbem
for /f %%s in (‘dir /b /s %windir%\system32\wbem*.dll’) do regsvr32 /s %%s
for /f %%s in (‘dir /b /s %windir%\system32\wbem*.mof’) do mofcomp %%s
或命令行执行(管理员权限)
(
echo cd %windir%\system32\wbem
echo for /f %%s in (‘dir /b /s %windir%\system32\wbem*.dll’) do regsvr32 /s %%s
echo for /f %%s in (‘dir /b /s %windir%\system32\wbem*.mof’) do mofcomp %%s
) > script.bat
- 将该文件保存到 c:\script.bat 。
- 双击运行这个bat文件(管理员权限)
- 等待命令的完成,如果此过程提示找不到文件,那么就在另一台电脑上拷贝此目录覆盖你的文件。
- 注意:次命令会运行数分钟,耐心等待!
- 打开服务MMC 。
- 右键点击 Windows Management Instrumentation 服务,点击属性。
- 在General 栏上,设置启动类型为Automatic 然后点击确定。
- 启动Windows Management Instrumentation 服务。
- 重新启动电脑,问题解决!