首页
社区
课程
招聘
[分享]解决Win10 1607下VC6运行出错的问题
发表于: 2017-1-2 16:50 5982

[分享]解决Win10 1607下VC6运行出错的问题

2017-1-2 16:50
5982
    更新Win10 1607后,VC6一运行就出错,具体问题反映在这儿:437K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6K6L8$3y4A6j5h3I4Q4x3X3g2E0K9h3y4J5L8%4y4G2k6Y4c8Q4x3X3g2U0L8$3#2Q4x3V1k6r3L8%4u0#2L8i4y4Q4x3V1k6%4K9h3&6V1L8%4N6K6i4K6u0r3M7X3!0Q4x3X3c8d9e0#2)9J5c8U0M7I4y4e0l9#2k6o6M7K6i4K6u0V1j5e0S2W2k6g2)9J5k6o6b7^5k6o6c8Q4x3X3b7&6y4U0N6U0i4K6u0V1j5K6p5K6k6U0k6T1y4o6N6T1k6U0x3H3i4K6u0r3N6$3W2F1x3e0m8$3j5K6k6Q4x3@1k6X3L8%4u0#2L8g2)9K6c8s2k6A6M7%4g2S2L8r3y4H3L8s2g2K6P5X3S2U0K9s2x3`.
    元旦刚好有空,顺便看了看,原来问题出在msctfuimanager.dll上,运行VC6后会加载msctfuimanager.dll,msctfuimanager.dll加载dui70.dll执行到DirectUI::Element::_UpdateDesiredSize()+1122行时,调用错误地址出错。但是其他程序不会出现这种问题。

     经测试,如果VC6不加载msctfuimanager.dll,VC6正常运行,不会出现上述问题。
     msctfuimanager.dll的地址放在注册表HKEY_LOCAL_MACHINE下的SOFTWARE\Classes\CLSID\{FD30033D-C508-491E-AE43-0075E46DED83}\InProcServer32主键下。
     解决思路为,在VC6启动时先修改注册表中存放的msctfuimanager.dll地址,阻止VC6加载msctfuimanager.dll,VC6退出时再恢复注册表中msctfuimanager.dll的地址。
     基于achillis改进的FileTool源码,我添加了修改注册表msctfuimanager.dll地址代码。但由于以往手工注册FileTool.dll的方法必须在VC6正常运行之后,所以我写了一个批处理Reg_FileTool.bat自动注册FileTool.dll。
     已知问题:VC6中中文输入不出现选词栏,运行VC后打开的部分其他程序也存在类似问题。
     Win10 1607 64位 专业版下测试通过。
     各位有更好的解决方案的话,欢迎交流一下。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 353
活跃值: (57)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
2
vbox+winxp.  懒得折腾。
2017-1-2 18:17
0
游客
登录 | 注册 方可回帖
返回