フォールトトレラントヒープ(FTH)
VS2013で、プログラムのデバッグをしようとしたら死ぬほど実行が遅く、いろいろ調べた結果表題のFTHに行き当たりました。もしプログラムに問題がないのに実行が遅い場合で、開発中に頻繁にクラッシュさせた場合などは、FTHを疑ったほうがいいかもしれません。
FTHが有効になってると、Visual Studioの出力ペインに以下のメッセージが出ます。(????は数字で場合によって変わります)
FTH: (????): *** Fault tolerant heap shim applied to current process. This is usually due to previous crashes. ***
このようなメッセージが出た時はFTHが起動して実行が大幅に制限されるようです。FTHについて詳しくはMicrosoftのサイトにかかれていますが、ここの情報だけでは実は解決できませんでした。
まずは、次回以降FTHが動かないようにレジストリをいじります。不安な人は触る前にレジストリのバックアップを取っておきましょう。
HKLM\Software\Microsoft\FTH@Enabled
上記の値を0にします。
次に以下の場所にある、実行したいプログラム名を探して削除。
HKCU\Softeware\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
最後にコマンドプロンプトから次のコマンドを打ち込む。(これは必要かどうかわかりません。サイト情報ではこれでプログラムリストのリセットが出来ると書いてあるんですが、どうもできてないようです)
Rundll32.exe fthsvc.dll,FthSysprepSpecialize
最後に再起動。
以後は、クラッシュしてもリストアップされることはないようです。(たぶん)