关于Adobe Reader pdfshell文件的BUG
问题是这样的:
起初是CFileDialog 遇到异常退出的问题,如下两行代码测试:
CFileDialog dlg(true);
dlg.DoModal();
多次打开文件的时候,第一次随便选择一个,第二次选择桌面的一个.txt文件,当鼠标移动到这个.txt文件(或者用键盘选择到)的时候,程序就崩溃了,测试一下记事本,也是一样的情况。
后来跟踪了一下,发现是pdfshell.dll模块引起的问题,我的环境是xp sp2+Adobe7,换成Adobe8.1.2仍然存在这个情况,但在2003系统在没有问题。以上说的都是中文版。
再讲一些细节:
pdfshell.dll并不在进程内存一直存在,当程序调用“打开文件”对话框的时候,他还没有插入进来,当选择一个文件,或者鼠标移动到一个文件,进程被插入
:\Program Files\Common Files\Adobe\Acrobat\ActiveX
路径下的pdfshell.dll和pdfshell.CHS
选定了文件点击“打开”按钮之后,pdfshell.dll卸载,只留下pdfshell.CHS
引发异常的时候,程序崩溃在shell32.dll,GetLastError的值是1008,ERROR_NO_TOKEN
笔者水平有限时间有限,文章只做抛砖引玉,不当之处,欢迎讨论