日前,有朋友出现IE不能打开第二层链接。情况是中冲击波的病症,所以查病毒,但是没有什么严重问题呀。注册表、进程、服务都去查了,除了3721和yahoo的插件外,没有其他属于病毒的东西。那么,就表明不是病毒引起的问题,要改变策略。
在网上找了一下,发现原来还有别的原因引起。那么很多网站都是介绍如何去解决,具体方法如下:
退出正在运行的所有程序。
单击开始,然后单击运行。
键入 regsvr32 urlmon.dll,然后单击确定。
当收到“DllRegisterServer in urlmon.dll succeeded”(urlmon.dll 中的 DllRegisterServer 已成功)消息时,单击确定。
如果问题未得到解决,请对以下每个文件重复执行第2步到第4步(在第3步中,用以下每个文件名替换Urlmon.dll):
Shdocvw.dll
Msjava.dll
Actxprxy.dll
Oleaut32.dll
Mshtml.dll
Browseui.dll
Shell32.dll
如果问题仍未得到解决,请检查以下注册表值是否存在和是否正确:
HKLM/SOFTWARE/Classes/Interface/{00020400-0000-0000-C000-000000000046}
名称:(默认)
值:IDispatch
HKLM/SOFTWARE/Classes/Interface/{00020400-0000-0000-C000-000000000046}/ProxyStubClsid
名称:(默认)
值:{00020420-0000-0000-C000-000000000046}
HKLM/SOFTWARE/Classes/Interface/{00020400-0000-0000-C000-000000000046}/ProxyStubClsid32
名称:(默认)
值:{00020420-0000-0000-C000-000000000046}
如果问题仍未解决,请重新安装Internet Explorer。如果您使用的Internet Explorer版本包含在操作系统中,请重新安装或修复操作系统。
知其然,也要知其所以然。为什么要重新注册这几个组件呢?
原来这是“一个存在于URLMON.DLL中的缓冲区溢出隐患。发生该隐患的原因在于Internet Explorer不能正确检查来自 Web 服务器的返回通讯请求的参数”(详细见微软的技术支持网站的安全公告MS03-004、MS03-015、MS03-020)。
那么什么可以引发这个漏洞呢?产生该缺陷的原因在于Internet Explorer用来呈现第三方文件类型的方法不能正确检查传递给它的参数。可见,是由于用户装了两个IE插件,两个插件之间而引起的冲突。
再具体一点,URLMON.DLL这个OLE组件究竟有什么作用:URLMON.DLL 是 Internet Explorer 的组件,该组件负责控制对从 Web 站点通讯过程中返回的 URL 和信息的处理。当中招时,Internet Explorer 不能对从 Web 站点返回的信息中的某些参数正确实施这些检查,因此有可能导致缓冲区溢出。所造成的溢出可能导致 Internet Explorer 失败,并可能允许攻击者在用户计算机上运行任意代码。
到次为止,这个问题基本弄清楚了。EXP值再次提高在此,奉劝一句:“上网要小心,慎放意外生!”除了不要浏览不良站点和打开陌生邮件外,还有不要乱装插件。
在网上找了一下,发现原来还有别的原因引起。那么很多网站都是介绍如何去解决,具体方法如下:
退出正在运行的所有程序。
单击开始,然后单击运行。
键入 regsvr32 urlmon.dll,然后单击确定。
当收到“DllRegisterServer in urlmon.dll succeeded”(urlmon.dll 中的 DllRegisterServer 已成功)消息时,单击确定。
如果问题未得到解决,请对以下每个文件重复执行第2步到第4步(在第3步中,用以下每个文件名替换Urlmon.dll):
Shdocvw.dll
Msjava.dll
Actxprxy.dll
Oleaut32.dll
Mshtml.dll
Browseui.dll
Shell32.dll
如果问题仍未得到解决,请检查以下注册表值是否存在和是否正确:
HKLM/SOFTWARE/Classes/Interface/{00020400-0000-0000-C000-000000000046}
名称:(默认)
值:IDispatch
HKLM/SOFTWARE/Classes/Interface/{00020400-0000-0000-C000-000000000046}/ProxyStubClsid
名称:(默认)
值:{00020420-0000-0000-C000-000000000046}
HKLM/SOFTWARE/Classes/Interface/{00020400-0000-0000-C000-000000000046}/ProxyStubClsid32
名称:(默认)
值:{00020420-0000-0000-C000-000000000046}
如果问题仍未解决,请重新安装Internet Explorer。如果您使用的Internet Explorer版本包含在操作系统中,请重新安装或修复操作系统。
知其然,也要知其所以然。为什么要重新注册这几个组件呢?
原来这是“一个存在于URLMON.DLL中的缓冲区溢出隐患。发生该隐患的原因在于Internet Explorer不能正确检查来自 Web 服务器的返回通讯请求的参数”(详细见微软的技术支持网站的安全公告MS03-004、MS03-015、MS03-020)。
那么什么可以引发这个漏洞呢?产生该缺陷的原因在于Internet Explorer用来呈现第三方文件类型的方法不能正确检查传递给它的参数。可见,是由于用户装了两个IE插件,两个插件之间而引起的冲突。
再具体一点,URLMON.DLL这个OLE组件究竟有什么作用:URLMON.DLL 是 Internet Explorer 的组件,该组件负责控制对从 Web 站点通讯过程中返回的 URL 和信息的处理。当中招时,Internet Explorer 不能对从 Web 站点返回的信息中的某些参数正确实施这些检查,因此有可能导致缓冲区溢出。所造成的溢出可能导致 Internet Explorer 失败,并可能允许攻击者在用户计算机上运行任意代码。
到次为止,这个问题基本弄清楚了。EXP值再次提高在此,奉劝一句:“上网要小心,慎放意外生!”除了不要浏览不良站点和打开陌生邮件外,还有不要乱装插件。