![Windows 10 上 VB6 应用程序的兼容性问题](https://linux22.com/image/1596067/Windows%2010%20%E4%B8%8A%20VB6%20%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7%E9%97%AE%E9%A2%98.png)
大问题
在我工作的组织中,管理系统(另一家公司创建的模块化应用程序)是在 97/98 年使用 VB 开发的,从未迁移到其他更先进的开发平台,例如 VB.NET。此应用程序(32 位)在 Windows 7(32 位和 64 位)上均可正常运行。
现在,出于显而易见的安全原因,我们必须在 Windows 10 上安装此系统,但存在以下几个问题:
- 不兼容 Windows 7,主应用程序通过其他按钮启动子应用程序,就好像它们是模块一样。有时这些子应用程序中的几个会抛出运行时错误‘53’:未找到文件而不指定缺少哪个 dll。其他子应用程序无法打开。当然,我们已经检查过这些图书馆是否已在 登记
regsvr32
。 - 与 Windows 7 兼容,运行时错误‘53’似乎消失了,但程序发出了一个警告(比如,预料到的警告(因为该文档以非英语语言显示)注意到无法将一些必须处理的文件复制到特殊文件夹
UserProfile
,添加细节“运行时错误‘52’:文件名或编号错误”。
我尝试过什么?
我尝试在 32 位和 64 位 Windows 10 上运行该应用程序。在两个版本中,程序都失败了,而且在 32 位版本中运行效果似乎更差。
我也尝试反汇编代码,最终发现错误来自于解决与特殊文件夹(至少
ProgramFiles
和UserProfile
)相关的某些路由。我自己研究了一下,我怀疑这可能是由于一些外壳和架构问题,如此线程所示,因为应用程序使用 shell 来解析特殊文件夹。但是,它正确解析了这些文件夹的路径。
我高度怀疑这与在更高模式下运行应用程序有关,我尝试在管理员模式下运行并获取特殊文件夹的权限。但我认为我缺少一些配置。
我正在认真考虑在 Windows 10 中虚拟化 Windows 7,直到程序更新为止,正如这里建议的那样,但我想用它作为最后通牒。
说实话,我陷入困境。有任何想法吗?
PD:请避免回答风格明显的问题“你的组织应该购买更好的软件”;我在 IT 部门,我们还没有设法解除这个丑陋的管理软件的数据库绑定;更不用说说服上级进行这一改变需要花费我们多少钱。
答案1
根据我的经验,Windows 10 中并不存在任何特定的问题,这些问题本质上与 Windows 7 不同。显然,应用程序可能会有所不同,因此这可能并不普遍适用;但我会首先寻找安装或配置类型的问题,而不是彻底的兼容性。
52/53 错误可能是权限问题?驱动器映射问题?我建议针对以下问题运行应用程序:进程监控看看你是否可以用该工具检测出缺少什么/没有找到什么。
答案2
-以管理员身份运行。
-将其安装在您创建的文件夹中。
- 拥有其所有子文件夹的所有权。
许多 VB6 应用程序甚至没有权限访问 Windows 10 上的自己的文件夹。
尝试 MS 应用程序兼容性工具包