一个qt开发的应用好好的,突然在Windows 10(专业版)上无法启动运行。写了一个最简单的测试,发现果然无法启动。但同样的应用测试,在笔记本电脑的Win10(家庭版)却一切正常。非常挠头
这东西挺要命的,因为目标应用不要求“管理员权限”,普通用户+绿色软件。看了下,右击用“管理员权限”启动程序,一切正常。
初步判断应该是某个dll无法正确加载的原因。查看QT官方资料 https://doc.qt.io/qt-5/windows-deployment.html 发现有个 Dependency Walker 的好东西可以追踪发现问题。
绿色软件真好,拿来就用。果然有问题,vcruntime14_1.dll无法载入
再确认一下,果真如此。
一般“拒绝访问”都是权限保护,这和问题描述高度一致。看看权限
2021-05-19更新,高度怀疑Windows 10 自动更新的问题。
加了普通用户权限;可以读了,显示二进制乱码,正确!
再次运行程序,正常了。普通用户权限也能正常打开运行了。
原因分析:
Windows 10的可能自动更新了VC2015的运行环境。这个版本的多了一个 vcruntime14_1.dll。该文件建立的权限设置,在Windows 10专业版上,造成访问权限冲突,家庭版正常。重新更改后,恢复正常。
估计用户自己卸载和重新安装 vcredist_64.exe 也能解决问题。