<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://maytide.net/read.php/1860.htm</link>
<title><![CDATA[HOWTO: 解决 外部数据库驱动程序 (1) 中的意外错误]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Windows Client]]></category>
<pubDate>Fri, 10 Nov 2017 07:14:42 +0000</pubDate> 
<guid>https://maytide.net/read.php/1860.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpup/2016/a2734efd2a17_D06F/troubleshooting.png"><img width="400" height="250" title="troubleshooting" alt="troubleshooting" src="http://goxia.maytide.net/ftpup/2016/a2734efd2a17_D06F/troubleshooting_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p><font color="#fd3f0d" size="4"><strong>HOWTO: 解决 外部数据库驱动程序 (1) 中的意外错误</strong></font></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前几天遇到一个用户故障，Windows 7 系统运行一个第三方开发的打印小工具，之前运行正常，这几天总是在选择 Excel 文件后报错，导致无法正常打印。具体的报错提示“外部数据库驱动程序(1)中的意外错误”，如下图所示：</p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_13-18-27.png"><img width="253" height="155" title="Snipaste_2017-11-10_13-18-27" style="display: inline; background-image: none;" alt="Snipaste_2017-11-10_13-18-27" src="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_13-18-27_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将该工具拷贝到我的环境下运行（Windows 10）也一样报错，即使设置兼容性模式也无济于事。用户反馈之前只更新过补丁，没有做过任何系统变更。为了快速定位根因所以先从补丁入手，经过测试基本锁定了三个更新补丁，后来在虚机测试环境下锁定了 <a href="https://support.microsoft.com/zh-cn/help/4041678/windows-7-update-kb4041678" target="_blank">KB4041678</a>，并重现了故障。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在 KB4041678 中微软声明了该补丁存在已知问题，会导致基于Microsoft JET 数据库引擎（Microsoft Access 2007 和更低版本或非 Microsoft 应用程序）的应用程序无法创建或打开 Microsoft Excel.xls 文件。错误消息为“<strong><font style="background-color: rgb(255, 255, 0);">外部数据库驱动程序 (1) 中的意外错误。(Microsoft JET 数据库引擎)。</font></strong>”</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 微软提供的临时解决方案是下载并安装 <a href="https://www.microsoft.com/zh-cn/download/details.aspx?id=13255&amp;751be11f-ede8-5a0c-058c-2ee190a24fa6=True" target="_blank">Microsoft Access 数据库引擎 2010 可再发行软件包</a>，然后在 Microsoft Excel 中修改 DB 连接字符串以将 ACE 用作提供程序。示例：将 Provider=Microsoft.Jet.OLEDB.4.0 更改为 Provider=Microsoft.ACE.OLEDB.12.0。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同时微软也正寻求一种解决方案，相信在不久的将来就会提供更新。但是，当下要解决用户问题，只能卸载 KB4041678，因为内网用户通过 WSUS 更新补丁，意味着将会有更多的用户遇到这个问题！是否可以找到被更新的文件做替换来解决这个故障呢？！尝试方法这样展开，先用 Application Verifier 和 WinDBG 去找验证这个应用程序，并截获断点。</p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 结果是，Application Verifier 收集到的日志中，并未发现什么异常，反而在 WinDBG 中发现了断点，如下图所示在载入模块“msexcl40.dll”时出现了问题。检查文件日期确实是10月份有更新过，尝试用正常 Windows 7 环境下的 msexcl40.dll 对故障Windows 7 系统和 Windows 10 系统进行替换，故障解除！</p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_13-28-20.png"><img width="630" height="234" title="Snipaste_2017-11-10_13-28-20" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="Snipaste_2017-11-10_13-28-20" src="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_13-28-20_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用 Process Monitor 抓包观察，发现 msexcl40.dll 开始到操作结束出现了一系列的错误，具体可参考下图。</p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_15-06-00.png"><img width="597" height="234" title="Snipaste_2017-11-10_15-06-00" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="Snipaste_2017-11-10_15-06-00" src="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_15-06-00_thumb.png" border="0"></a></p>&nbsp;&nbsp;<p><a href="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_15-05-18.png"><img width="304" height="234" title="Snipaste_2017-11-10_15-05-18" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="Snipaste_2017-11-10_15-05-18" src="http://goxia.maytide.net/ftpup/2017/f05fce4e503b_CBCE/Snipaste_2017-11-10_15-05-18_thumb.png" border="0"></a></p>
]]>
</description>
</item><item>
<link>https://maytide.net/read.php/1860.htm#blogcomment5200</link>
<title><![CDATA[[评论] HOWTO: 解决 外部数据库驱动程序 (1) 中的意外错误]]></title> 
<author>路过的一只 &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Wed, 15 Nov 2017 13:49:08 +0000</pubDate> 
<guid>https://maytide.net/read.php/1860.htm#blogcomment5200</guid> 
<description>
<![CDATA[ 
	看11月更新说这个问题修掉了
]]>
</description>
</item>
</channel>
</rss>