作者:朱金灿
来源:http://blog.csdn.net/clever101
Win7 64位系统经常死机,每次死机从应用程序事件里查到的这个信息:
事件过滤器过滤"SELECT* FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA"Win32_Processor" AND TargetInstance.LoadPercentage > 99"
事件无法在命名空间里激活"//./root/CIMV2" ,造成此问题的错误代码 0x80041003.
直到问题被解决前,此事件不能通过系统忽略掉。
网上查了些资料,得知描述的事件并不代表系统中的任何问题,可以安全地忽略。 但是,如果要防止生成这些事件,需要手动删除此特定的WMI注册。请尝试以下步骤。
1. 在文本编辑器(例如记事本)中,创建命名为 workaround.txt的新文本文档。
2. 将以下代码粘贴到 workaround.txt,然后另存为workaround.vbs:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\subscription")
Set obj1 = objWMIService.ExecQuery("select * from __eventfilter where name='BVTFilter' and query='SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA ""Win32_Processor"" AND TargetInstance.LoadPercentage > 99'")
For Each obj1elem in obj1
set obj2set = obj1elem.Associators_("__FilterToConsumerBinding")
set obj3set = obj1elem.References_("__FilterToConsumerBinding")
For each obj2 in obj2set
WScript.echo "Deleting the object"
WScript.echo obj2.GetObjectText_
obj2.Delete_
next
For each obj3 in obj3set
WScript.echo "Deleting the object"
WScript.echo obj3.GetObjectText_
obj3.Delete_
next
WScript.echo "Deleting the object"
WScript.echo obj1elem.GetObjectText_
obj1elem.Delete_
Next
3.运行这个workaround.vbs,具体方法是在命令行里运行:cscript c:\workaround.vbs,这里假设workaround.vbs保存在C盘根目录。
运行此脚本后,系统再也没有死机了,事件 ID 10 消息不再出现在应用程序日志中。但是,您必须手动清除任何以前的事件 ID 10 消息。