vs2015下Windows 10中的容错堆

Posted

技术标签:

【中文标题】vs2015下Windows 10中的容错堆【英文标题】:Fault Tolerant Heap in Windows 10 under vs2015 【发布时间】:2016-05-23 00:59:32 【问题描述】:

在 Vs2015 中为 VB6 使用者创建 ATL COM DLL 会很糟糕,因为“容错堆 shim”正在应用于 VB6,而我是从 vs2015 调试命令运行的。

我发现了很多关于在 Windows 7 中禁用 FTH 的帖子,实际上我已经全部应用了它们,包括删除 \Windows\AppPatch 中的 DLL,以及在注册表中禁用 FTH 并运行引用的 rundll 脚本。

不过,这该死的东西让我无法调试 dll,因为 FTH 让它在调试模式下在 VB6 下像狗一样运行。

我什至在注册表的排除列表中添加了“vb6.exe”和“full_path_to_vb6.exe”——但无济于事。

我绝望了,今天需要完成一些工作,我已将 vb6.exe 重命名为 myvb7.exe (!),这消除了 VS 调试器中的 FTH 警报。但是为什么我不能为 vb6.exe 禁用 FTH?

事实上,为什么在附加调试器时它甚至会被启用?今天把我逼疯了。

有人吗?

【问题讨论】:

***.com/questions/5020418/… 这可能与 vb6.exe 在内置兼容性数据库中有条目有关。在 Windows 7 上,此条目似乎不会强制容错堆,但在 Windows 10 上可能会有所不同 - 或者正在应用的其他填充程序之一可能会间接影响使用 FTH 的决定。 (您可以使用 Microsoft 应用程序兼容性工具包检查兼容性数据库。) @Jonathan:正如我在我的问题中所描述的那样,链接到帖子在带有 vb6 的 Windows 10 上没有任何区别 谢谢你,Harry,你可能正在做一些事情。我认为现在使用重命名的 vb6 exe 文件可能更容易。遗憾的是,在 vs2015 中无法禁用 shims,因为我认为在大多数情况下它们主要是在开发人员的调试方式中。 【参考方案1】:

在这方面没有太多帮助。为了将来参考,如果应用程序(在本例中为 VB6)设置为在兼容模式下运行(通过右键单击用于启动它的快捷方式,或通过目标 exe 本身上设置的属性),那么您无需执行任何操作将释放垫片!

解决方法:Windows 10下不要在兼容模式下运行vb6!

【讨论】:

这听起来不像是一个解决方案。改用启动 XP 的虚拟机。有人应该向该客户提供他无法拒绝的报价:)

以上是关于vs2015下Windows 10中的容错堆的主要内容,如果未能解决你的问题,请参考以下文章

Win7下不能用VS2015构建Qt 5.6?

VS2015--win32工程配置的一些想法之算法min/max与windows中的 min/max宏冲突

win10vs2015安装文件无法启动

vs2005安装失败

Win10 + Python + MXNet + VS2015配置

win 7 旗舰版 64位 安装 VS 2015的时候提示安装时发生严重错误 ?