none
安装CAJ阅读器出现的Mircosoft C++ Runtime Error(篇幅较长) RRS feed

  • 问题

  • 接下来我说的有点长,但这真的是一个很有意思的问题,希望各位能耐心看下去。

    昨天我用Geek Unistaller卸载了一些没用的软件,之后就发现之前安装好的CAJ Viewer出现问题,已经打开的文献可以正常阅读,而不能打开其他的文章,当时我没有在意。今早,打开电脑后,发现所有caj格式的文章全都打不开了,显示Microsoft C++ Runtime Library Error,于是自然,我卸载了之前的版本,重新安装,结果安装7.2.0的版本失败了,错误代码1904为"无法注册模块",于是我换用旧版本7.1.2尝试能不能解决,幸好这个可以,原本以为已经解决,结果打开一篇文章,显示依旧是Runtime Error,=……=

    在CSDN等论坛上,给出相应解决措施:删除C/Windows/Program Files (x86)名录下的TTKN文件夹,接着神奇的事情发生了,我找了好半天,竟然发现Windows名录下竟然没有Program Files 的文件夹,打开文件夹选项,显示隐藏目录,也找不到这个文件夹,然而在caj安装界面却能出现这个文件夹………………

    干,我启动360木马急救箱查杀整个电脑,出乎我意料的,真的有木马,但位置都不在windows名录下,在反复重启几次后,查杀完成,果然无济于事,我在C/Windows名录下重新建立了一个Program Files (x86)名称文件夹(竟然能建起来),把7.1.2版本的CAJ Viewer安装在这个名录下,竟然……失败了,这次错误我只记得代码是1304,没有权限访问,打开新建的x86文件夹,wc什么时候多出来了TTKN文件夹,二话不说我直接delete,又TMT失败了,无System权限,继续搜解决方法,属性-安全-高级,添加User,不让我加,硬是用360强力删除给拿下去了,

    问题还没结束,因为还是安不上,已经做了U盘重做电脑打算,突然想到,下一个绿色版的试试,打开发现少了一个dll文件,赶紧用微软集合包安装上,终于松了一口气,可以打开了,但直接装CAJ Viewer已经是不可能的事了……

    最后说了这么多,尽管能找到一个解决方法,但对于装不上CAJ这个事情,还是非常困惑,到底是什么原因,…………

    2019年11月27日 3:17

全部回复

  • 卸载不完整(例如只删了文件没删注册表)会让安装程序认为依赖项已经安装而跳过但是实际上依赖文件还是不可用状态。使用第三方卸载程序或者卸载过程中开启了杀毒软件都可能造成卸载不完整问题。依赖项不存在会导致无法注册模块的问题,但是不会导致Microsoft C++ Runtime Library Error,除非这个软件有bug,例如在依赖项不存在的时候没有检查加载操作是否失败而去直接解引用空指针(入门级程序员易犯的错误)。具体一个程序依赖于哪些依赖项,可以直接去问作者或者反向工程安装程序。

    Program Files从来都是在根目录而不是Windows目录下。Windows目录权限很高,没有用管理员身份启动安装程序的话,写入Windows目录会被微软认为是不兼容Windows Vista或者更新版本的Windows的软件,而启用虚拟化措施把更改转发到virtualstore,这样的更改只有启用了虚拟化的程序(在这里是安装程序)自己看得到,其他的程序(例如被安装的程序)是看不到的,如果这个软件没有使用相对路径加载依赖项,而是使用安装程序记录的路径,这也会造成依赖项路径错误。

    不要安装第三方软件到Windows目录。Windows 2000开始微软的桌面软件开发规范就要求第三方软件默认安装到Program Files了。如果软件允许自定义安装文件夹,你只要不是安装到系统目录,也不应该有问题。就算有不规范的程序要求默认安装到Windows目录,你在安装过程中也要改掉,原因见上。

    32位程序和64位程序文件夹视图不同,64位程序里Program Files (x86)看到的就是32位程序里看到的Program Files。一般情况下,资源管理器是64位,安装程序是32位。也就是说,在64位资源管理器里,你会在Program Files (x86)目录下看到32位安装程序以为自己安装到了Program Files的文件。




    Visual C++ MVP

    2019年11月27日 12:47
    版主