Windows 7 如何关闭容错堆?

Windows 7 如何关闭容错堆?,windows-7,heap,fault-tolerant-heap,Windows 7,Heap,Fault Tolerant Heap,我最近在启动我的应用程序时,在Visual Studio 2005输出窗口中看到了这一行: FTH:(7156):***应用于当前进程的容错堆垫片。这通常是由于以前的崩溃*** 我已尝试使用以下说明关闭容错堆: 我正在运行Windows 7 64位版本,因此我对32位和64位注册表进行了更改,并使用32位和64位版本的Rundll32.exe fthsvc.dll,fthsysprepespecialize运行“Rundll32.exe fthsvc.dll,fthsysprepespecia

我最近在启动我的应用程序时,在Visual Studio 2005输出窗口中看到了这一行:
FTH:(7156):***应用于当前进程的容错堆垫片。这通常是由于以前的崩溃***

我已尝试使用以下说明关闭容错堆:

我正在运行Windows 7 64位版本,因此我对32位和64位注册表进行了更改,并使用32位和64位版本的Rundll32.exe fthsvc.dll,fthsysprepespecialize运行“Rundll32.exe fthsvc.dll,fthsysprepespecialize”命令

但是,重新启动后,在调试应用程序时,我仍然会得到容错堆

这是一个真正的问题,因为它掩盖了我试图复制的bug,而且还会降低性能

是否有人对如何禁用容错堆有任何其他建议?

您可以编辑到


另请参见:

将此注册表值设置为
0

HKEY\u LOCAL\u MACHINE\Software\Microsoft\FTH\Enabled

也遇到了这个问题。在Windows\AppPatch中重命名/删除AcXtrnal.dll似乎对我有用。我喜欢微软推荐的这个操作(我先做的)什么都不做。

“Rundll32.exe fthsvc.dll,fthsysprepespecialate”看起来只清除当前标记的应用程序列表。如果您的应用程序仍然导致异常,FTH仍应介入并接管

如前所述:


将此注册表值设置为0:
HKEY\U LOCAL\U MACHINE\Software\Microsoft\FTH\Enabled


这将为整个系统禁用FTH。

为单个应用程序禁用FTH

转到HKEY_本地_计算机和HKEY_当前_用户版本 软件\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\your\u application.exe和 删除容错堆条目


从(实际上)

可以将可执行文件的名称添加到排除列表中

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\ExclusionList

对我有效。

我还必须重命名该文件,因为与此项关联的注册表项中没有适用的数据。如果您有一个行为不端的应用程序,我希望它们会填充。但在我的例子中,我在VisualStudio中调试自己的应用程序。因此,在这种情况下,无论FTH服务是否运行,都是我的进程以某种方式加载FTH。事实上,我没有列出以前被标记为行为不端的应用程序

但我必须遵循这些指示:


因为在我取得所有权并确保完全控制之前,它不允许我重命名该文件。

在使用(Microsoft::VisualStudio::CppUnitTestFramework)运行单元测试时,我遇到了类似的问题。 不知何故,我违反了一些堆分配,下一次尝试调试时,我收到消息:“容错堆垫片应用于当前进程。这通常是由于以前的崩溃。”调试环境冻结


为了让它再次工作,我必须删除测试用例,重新编译并再次添加它,然后重新编译,然后我可以设置断点并进入测试。

您可以通过以下步骤清除FTH跟踪的应用程序列表,而无需停止此服务:

  • 单击开始菜单
  • 右键单击计算机,然后单击管理
  • 单击事件查看器->应用程序和服务日志->Microsoft-> Windows->容错堆
  • 查看FTH事件
  • 右键单击并选择“清除日志”,可以找到名为operational的文件, 然后您可以再次运行程序,警告消息将消失,
    它在不重启操作系统的情况下与我一起工作

    在Windows 10上,注册表位置为:

    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH
    
    您可以从以下列表中删除可执行文件:

    Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\State
    
    也可以从提升的命令提示符运行此命令

    Rundll32.exe fthsvc.dll,FthSysprepSpecialize
    

    您可能需要重新启动计算机

    非常感谢您的回答。不幸的是,按照您的建议修改应用程序清单和重置PCA没有任何区别。这个解决方案对我不起作用。是否添加了可执行文件的整个路径?或者仅仅是可执行文件名?@AngieQuijano在一开始它对我也不起作用,但是当我删除并重新编译我的exe文件时它起作用了(只是重新编译它不起作用,我必须删除它)。@DonaldDuck删除exe对我不起作用(Windows 10)。我不得不重新命名它。这个解决方案对我有效,但我只需要删除HKEY_LOCAL_机器的FTH。这只会在启用后关闭它。这并不能阻止它再次被启用,这才是真正需要的…我必须删除并重新编译我的exe文件才能使其工作。@DonaldDuck删除exe对我不起作用(Windows 10)。我不得不重新命名它。