代码改变世界

KB956391 无法加载客户端打印控件

2008-12-08 12:41  sleepfulBird  阅读(2980)  评论(4编辑  收藏  举报

http://blog.csdn.net/zouqiang_sz/archive/2008/10/29/3176004.aspx

[下面为转载内容]

昨天突然碰到一个棘手的问题,所有用利用Reporting Service在客户端打印的功能都不可以用了,系统显示"Unable to load print control". 费了半天的劲,才找到原因,原来是微软在10月15号的更新惹的祸。当天很多用户都更新了KB956391,这个重要安全更新组织了Reporting Service的ActiveX控件在本地的运行。不过还好,不少老外也碰到同样的问题。看看这个论坛,很多人的后果比我更严重。

 
在卸载了这个更新KB956391的后,功能就恢复正常了。不过,这个也只能是临时措施,因为更新随时还是要打上去的。这个老外就尝试了一个不同的解决办法,就是把那个KB的Registry断掉,不过他本人也不认为这个是最终解决办法,这样的话系统的漏洞不久没法补了。看看:
 
 
不过,紧接着他又提供了一个Final 解决方案,更新SQL Server 2005 SP2,经过摸索发现安装以下更新(KB954607)在SQL Server 2005其作用了,用户在按打印按钮的时候,系统提示下载了一个新的ActiveX,名字叫"RSClientPrint 2005 Class"。这个东东不受KB956391影响。哈哈,看来世界上高手还是真多!心理暗自高兴;)
 
原以为问题就此解决了,可还没高兴多久,紧接着另一个又来了,我们的系统里面用到了ReportViewer,这个控件里面的打印按钮,没有用到上面新的ActiveX控件里面的客户端打印功能,错误依旧。这下可就麻烦了,难道为了微软的这个更新我要把相关的程序都改一遍吗?真是越来越郁闷!
 
还好,我同事又来了新的研究成果,我们的VS2008需要安装一个更新KB952241,安装后在VS2008的目录里面的ReportViewer子目录里面的文件版本就更新了。全变成了,9.0.30271.1,这样在本机调用这个功能OK了。所以,赶紧把它发布到服务器上去试试看。
 
可是服务器上面居然还是不行,好像VS2008的那个补丁,对服务器没有用。正在万般无奈之际,只好继续查找解决方案。功夫不负有心人,我们找到了下面这个东东,Microsoft Report Viewer Redistributable 2008 (KB952241),在安装过后,客户端可以通过ReportViewer控件在客户端进行打印了。
 
补充如下:
我的是VS2005,
首先SQL SERVER2005 SP2
其次Microsoft Report Viewer Redistributable 2005 Service Pack 1
最后SQLServer2005-KB954606
重启iis ok