真奇怪,我的windows 7在windows\system32和windows\syswow64下面的2个comctl32.dll都是
5.82版本,我查找全盘在windows\winsxs\....的子目录下面发现了6.1版本的comctl32.dll有
amd64版和x86两个版本,分别有1.6MB和1.9MB多字节。我把这2个版本分别拷贝到
windows\system32和windows\syswow64子目录下面,替换掉5.82的老版本。怪事出来了。
我的syswow64下面的已经替换了,文件长度是1.9M多了,版本信息也显示6.1版,而system32
下面的comctl32.dll明明已经替换了,文件长度是1.6M多,可是版本信息仍然显示5.82版,怪事啊
,明明是1.6M多的6.1版本,版本信息却死命的仍然显示5.82版。这不是最重要的。
我要运行的程序有一个API是TASKDIALOG,这个API要6.0版本以上的comctl32.dll支持,5.8的不支持。
我现在明明已经替换了5.8为6.1版本了,可显示文件属性仍然是5.8版本,文件长度明明是1.6M是
高版本了。我还用ida分析了新版的comctl32.dll,里面显示了有TASKDIALOG的函数,而分析5.8版本
的时候是没有TASKDIALOG函数的。我就奇怪了,明明6.1版本的1.6M多字节长的comctl32.dll,却仍然
显示5.8版本,而且仍然不支持TASKDIALOG函数,我不禁想砸了电脑,这是怎么搞的?
5.82版本,我查找全盘在windows\winsxs\....的子目录下面发现了6.1版本的comctl32.dll有
amd64版和x86两个版本,分别有1.6MB和1.9MB多字节。我把这2个版本分别拷贝到
windows\system32和windows\syswow64子目录下面,替换掉5.82的老版本。怪事出来了。
我的syswow64下面的已经替换了,文件长度是1.9M多了,版本信息也显示6.1版,而system32
下面的comctl32.dll明明已经替换了,文件长度是1.6M多,可是版本信息仍然显示5.82版,怪事啊
,明明是1.6M多的6.1版本,版本信息却死命的仍然显示5.82版。这不是最重要的。
我要运行的程序有一个API是TASKDIALOG,这个API要6.0版本以上的comctl32.dll支持,5.8的不支持。
我现在明明已经替换了5.8为6.1版本了,可显示文件属性仍然是5.8版本,文件长度明明是1.6M是
高版本了。我还用ida分析了新版的comctl32.dll,里面显示了有TASKDIALOG的函数,而分析5.8版本
的时候是没有TASKDIALOG函数的。我就奇怪了,明明6.1版本的1.6M多字节长的comctl32.dll,却仍然
显示5.8版本,而且仍然不支持TASKDIALOG函数,我不禁想砸了电脑,这是怎么搞的?
你这样复制回去反而会破坏系统的结构。用SFC /SCANNOW修复系统文件吧。
我在编译VC的时候,显示“连接错误,未找到_imp_taskdialog”,这个表明,编译还是通过了,
只是连接未找到连接库。而我用汇编语言测试了一下调用taskdialog,汇编通过了,然后我指定了
comctl32.lib进行连接,连接也通过了,生成了.exe文件,然后运行.exe的时候,出现错误:“无法定位序数344于动态链接COMCTL32.dll上”
所以,如何指定使用版本6的comctl32.dll呢?