-
-
[分享]解决Win10 1607下VC6运行出错的问题
-
发表于:
2017-1-2 16:50
5807
-
[分享]解决Win10 1607下VC6运行出错的问题
更新Win10 1607后,VC6一运行就出错,具体问题反映在这儿:
https://social.microsoft.com/Forums/windows/ro-RO/71505d73-a8ee-48d4-967c-c13f6b47bf30/win10vc6?forum=visualcpluszhchs
元旦刚好有空,顺便看了看,原来问题出在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位 专业版下测试通过。
各位有更好的解决方案的话,欢迎交流一下。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!