我目前正在尝试解决系统上的 IE 8 性能问题。
我使用 Sysinternals Process Monitor 分析了我的系统,发现日志中有很多“BUFFER OVERFLOW”条目(见下文)。有什么方法可以解决这个问题吗?
日志条目例如:
iexplore.exe RegQueryValue HKLM\System\CurrentControlSet\services\NetBT\Linkage\Export BUFFER OVERFLOW Length: 144
communicator.exe RegQueryValue HKLM\System\CurrentControlSet\services\Tcpip\Linkage\Bind BUFFER OVERFLOW Length: 144
OUTLOOK.EXE RegQueryValue HKLM\System\CurrentControlSet\services\Tcpip\Linkage\Bind BUFFER OVERFLOW Length: 144
答案1
这不是错误。实际发生的情况是程序请求了它不知道长度的数据。它提供了一个初始缓冲区。如果缓冲区太小,则会返回缓冲区溢出以及所需的大小,程序可以重新发出具有正确大小的请求。不要与术语缓冲区溢出混淆,后者表示可能导致安全漏洞的错误数据覆盖。
答案2
我自己偶尔会在不同的程序中注意到这种情况,而且许多网络扫描仪和工具也给我带来了这种情况。
第一个合乎逻辑的步骤是缩小“错误”或问题的范围——通过观察进程监视器并查看错误发生的时间并尝试复制它。如果您遇到问题,请尝试调整过滤器。
我现在正在尝试这个,我发现BluetoothView.exe
在创建文件然后查询同一个文件后会导致缓冲区溢出(BO)——这就是导致 BO 的原因。一个例子是,在不到千分之一毫秒的时间内,BluetoothView 使用以下操作创建了一个 BO QuerySecurityFile (BluetoothApis.dll)
:。
在中Process
的选项卡下,有一个模块列表,其中包括常用的 shell 文件和诸如、、和编解码器之类的内容,以及其他 Nirsoft 软件(例如 Network Explorer)。虽然可能发现这些东西受到蓝牙的影响,但奇怪的是实际程序从未发现任何东西。Event Properties
procmon
SkyDriveShell.dll
KernelBase.dll
ieframe.dll
Windows.Media.Streaming.dll
在选项卡下,Stack
模块包括:ntdll.dll
、、、、、、、、、和。kernel32.dll
wow64.dll
wow64cpu.dll
guard32.dll
fltmgr.sys
ntoskrnl.exe
apphelp.dll
BluetoothView.exe
<unknown>
我之所以检查这一点,是因为我离开家一段时间,并且让电脑运行了几天,当我回来时,我发现有些东西不对劲,所以我想检查一下。打开任务管理器后,我的电脑崩溃了,无法再完成加载 Windows 8。屏幕上没有出现 W8 的加载/启动画面,而是闪烁了四五行代码,因为左上角的闪烁指示器(让您知道可以输入命令的指示器)在屏幕上向下移动了大约 4 或 5 行,这不是正常功能。
我必须做一些非常规的事情才能重新回到 Windows,但我不会深入探讨这一点。
就您和我而言,我认为下一步是仔细研究这个程序,并查看它所使用的程序。