此错误是由于处理计数器列表时发生了一个竞争问题。当LoadPerf.dll读取了最后计数器的索引值的同时又有其他计数器被添加,于是新的计数器的索引值比最后计数器的索引值还大,因而LoadPerf.dll认为计数器数值不正确而记录下次事件日志。因为LoadPerf.dll在遇到此错误后会进行重试并成功读取新的计数器,所以这个错误在重试之后不会造成使用上的影响。
解决方法是在命令提示符下键入:lodctr /r,自动重建性能计数器字符串表
性能计数器信息保存在以下位置:
注册表:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/Current Version/Perflib/009
系统文件夹中的2个文件:
%Systemroot%/System32/Perfc009.dat 和
%Systemroot%/System32/Perfh009.dat
重建计数器值步骤如下:
将系统安装盘中的两个文件:DriveLetter:/i386/perfc009.da_ 和DriveLetter:/i386/perfh009.da_ 分别展开成:Perfc009.dat 和Perfh009.dat (DriveLetter代表系统安装盘盘符),然后复制到系统文件夹%Systemroot%/System32/下,替换掉原来的2个文件。展开文件的命令格式为:expand perfc009.da_ Perfc009.dat。
打开注册表编辑器,定位到:
HKEY_LOCAL_MACHINE/Software/Microsoft/Windows NT/CurrentVersion/Perflib项。
修改其中的2个子键值,LastCounter 改为十进制的1846,LastHelp 改为十进制的1847 。
再定位到HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services项。
找到所有的performance子键,如果performance子键内含有以下键值,则删除:
FirstCounter
FirstHelpA
LastCounter
LastHelp
做完以上工作,接下来就是重新添加性能计数器值:
1. 打开一个命令提示符窗口。
2. 通过输入cd %Systemroot%/System32命令,转入到系统文件夹。
3. 通过findstr drivername *.ini命令,找到所有需要加载的驱动。
4. 记下查找到的ini文件列表
5. 然后对所有找到的ini文件通过lodctr inifile命令重新加载
6. 最后重新启动计算机