日来,我的一个朋友(超超)总是跟我说他的建行网银盾在 Windows 8 消费者预览版里面工作不正常。怕影响他的支付功能,我就几次通过远程协助,连接到了他的 PC 进行了该问题的研究。结果发现,问题如下:

 

1. 尝试了各种兼容性设置(例如Vista,Windows 7 兼容模式)都不行;

2.如果安装了建行 E 路护航,那么证书管理工具里面检测不到证书,证书更新工具里总是误认为网银盾未插入,支付界面也是提示检测不到证书;

 

 

 

 

3. 如果单独安装了证书管理工具,那么能检测到证书,但是支付的时候总是提示 E 路护航没有安装。

 

 

看来带有 E 路护航的驱动里面包含了证书管理工具,但是内置的版本工作不正常,而单独安装能够使用的证书管理工具,又会使 E 路护航失效。好在这两个有交集,而且有能使用的一版证书管理工具,这就为我们通过替换文件的办法对此进行修复创造了潜在的可能。

 

接下来,我在他的计算机上,去建行官网下载中心页面中部下载了带有 E 路护航的普通网银盾 Windows 7 32 位驱动 CCB_Security_Client.exe,然后去页面下方下载了握奇网银盾的管理工具独立安装包。我发现,带有 E 路护航的安装程序是无法进一步通过解压工具解压开来的,但是握奇网银盾的管理工具倒是可以解压开来。我们装上了有E路护航的CCB_Security_Client.exe,此时自动装好的证书管理工具打开后是检测不到证书的,如上文讲的具体问题中的第2点。我跟踪到了证书管理工具所在的安装目录 %SystemRoot%\System32\WatchData\Watchdata CCB CSP v3.2,发现里面有很多动态链接库文件,于是我将其与解压管理工具独立安装包 ccb_usbkey_watch.exe 所得到的同名dll文件进行版本对比,发现仅一个叫 wdkmgr.dll 的文件版本不同。我想,这个可能是引起问题的原因。

 

于是我们做了实验,将管理工具独立安装包里面的该文件替换 system32 下面那个已安装路径下的同名文件,然后再尝试,就发现能够成功检测到证书了。由于不是独立安装一遍管理工具,而是替换文件的方式,因此 E路护航也没有掉。接下来测试支付1元人民币成功,建行网银(握奇硬件)在 Win8 beta 下得以解决。

 

到可能有很多用户跟我们一样,彻底删掉了 Windows 7,每天都在用 Windows 8 Consumer Preview 版处理生活与工作的方方面面,为了让同样不能使用建行网银的用户能够正常使用网银为中国创造 GDP,在中国建设银行官方放出新版可以正常使用的驱动之前,我在这里与大家共享修正这一问题的具体解决方案

 

值得说明的是,我们仅针对32位 Win8 Beta 系统下的握奇网银盾进行了测试,因为我没有建行的网银,而超超只有这一个软/硬件环境,所以希望大家在使用以下解决方案遇到问题时,积极地在本博客下方留言反馈,或者前往我的微博 http://weibo.com/shehuayu (@佘华煜)进行反馈,我会及时修正。

 

以下是 step by step 的解决方案内容:

 

1. 前往 http://www.ccb.com/cn/jump/download.htm 页面"个人客户E路护航网银安全组件下载"栏目中去下载网银盾的安装程序,并且双击执行安装;

2. 安装结束后,前往以下地址下载我制作好的批处理修补程序CCB_WatchData_Remediation.zip,它将自动帮您替换dll为能够正常使用的版本,你可以理解为是打了个补丁。注意,下载后需解压此 zip 文件,然后以管理员身份运行其中的 CCB.cmd 以应用此修补程序。下载地址:
https://skydrive.live.com/redir.aspx?cid=3222d068881c5251&resid=3222D068881C5251!208&parid=3222D068881C5251!116

如果您觉得不放心我写的批处理程序,可以这样手动完成第2步:继续在上一步给出的建行下载页面中,滚动到页面下方的"网银盾管理工具下载"一栏,下载握奇网银盾管理工具 ccb_usbkey_watch.exe 并且将其解压,然后转到其中的 csp3.0 目录,将里面的 wdkmgr.dll (版本1.0.0.39)拷贝到 %SystemRoot%\System32\WatchData\Watchdata CCB CSP v3.2 下面替换同名文件 (64位系统请拷贝到 %SystemRoot%\SysWOW64\WatchData\Watchdata CCB CSP v3.2 下替换同名文件),替换时您可以结束掉所有建行网银程序的进程来确保可以成功替换文件。

3. 重新启动计算机,或者重新以管理员身份运行位于开始菜单中的已安装的网银证书管理工具,重新拔插一次网银盾硬件,您应该就会看见证书的出现了。

 

 

4. 您可以点击上图中所示红色区域内的 View Cert 按钮来查看当前的证书,最后需要您点击 Register Cert 按钮来向计算机注册此网银证书。

5. 去购物吧,您应该可以支付了。就用 IE10 的默认设置去支付就可以成功哦,无需更改兼容模式,无需使用别的浏览器。我的朋友超超在应用了此修复批处理程序后,成功支付了1元钱。网页能正常检测到 E路护航程序和证书,并且弹出输入支付密码的界面。

 

 

 

最后,便于交流和研究,也为了消除各位怕我写的批处理含有恶意代码的顾虑,将批处理源码贴在末尾:

 

@echo off

echo *************************************************
echo China Construction Bank USB Key Win8 Solution
echo 中国建设银行握奇网银盾 Win8 解决方案
echo Version 0.1 20120412
echo Author: Eric Sheh (新浪微博 @佘华煜)
echo Send your feedback to http://weibo.com/shehuayu
echo 向 http://weibo.com/shehuayu 提供您的反馈 :)
echo Special thanks to http://weibo.com/wuctt
echo 感谢新浪微博 @贱人超 帮助测试!
echo *************************************************
echo.
echo.

Set source="%~dp0wdkmgr.dll"

if not exist %source% (
echo wdkmgr.dll is missing!
echo 缺少wdkmgr.dll文件!
echo.
@pause
exit)


if /i "%PROCESSOR_ARCHITECTURE%" == "x86" goto 1
if /i "%PROCESSOR_ARCHITECTURE%" == "AMD64" goto 2

echo System Not Supported!
echo 不支持此系统!
echo.
@pause
exit

:1
echo 32-bit OS detected!
echo 检测到32位操作系统!
echo.
echo Patching...
echo 正在修复...
Set des="%SystemRoot%\System32\WatchData\Watchdata CCB CSP v3.2\"
if not exist %des% (
echo.
echo Please install E Safety for Win 7 32-bit from CCB first!
echo 请先安装建行E路护航程序 Win 7 32位版!
echo http://www.ccb.com/cn/jump/download.htm
echo.
@pause
exit)
@taskkill /im WDCertM_CCB.exe /f
@taskkill /im WDKeyMonitorCCB.exe /f
@attrib -R "%SystemRoot%\System32\WatchData\Watchdata CCB CSP v3.2\wdkmgr.dll"
@copy /Y %source% %des%
@attrib +R "%SystemRoot%\System32\WatchData\Watchdata CCB CSP v3.2\wdkmgr.dll"
echo.
echo Done! A system reboot is suggested!
echo 完成!建议重新启动计算机!
@pause
exit

:2
echo 64-bit OS detected!
echo 检测到64位操作系统!
echo.
echo Patching...
echo 正在修复...
Set des="%SystemRoot%\SysWOW64\WatchData\Watchdata CCB CSP v3.2\"
if not exist %des% (
echo.
echo Please install E Safety for Win 7 64-bit from CCB first!
echo 请先安装建行E路护航程序 Win 7 64位版!
echo http://www.ccb.com/cn/jump/download.htm
echo.
@pause
exit)
@taskkill /im WDCertM_CCB.exe /f
@taskkill /im WDKeyMonitorCCB.exe /f
@attrib -R "%SystemRoot%\SysWOW64\WatchData\Watchdata CCB CSP v3.2\wdkmgr.dll"
@copy /Y %source% %des%
@attrib +R "%SystemRoot%\SysWOW64\WatchData\Watchdata CCB CSP v3.2\wdkmgr.dll"
echo.
echo Done! A system reboot is suggested!
echo 完成!建议重新启动计算机!
@pause
exit