Skip to content

Instantly share code, notes, and snippets.

@t-mat
Created October 15, 2012 22:56
Show Gist options
  • Save t-mat/3896188 to your computer and use it in GitHub Desktop.
Save t-mat/3896188 to your computer and use it in GitHub Desktop.
Windows7: 「プログラム互換性アシスタント」および「互換モード」設定を切る

Windows7: 「プログラム互換性アシスタント」および「互換モード」設定を切る

x64 コードが WIN32 API (DLL) を呼び出して落ちた場合等に出て、問答無用で勝手に設定を追加していく。 開発中などに非常に邪魔なので、切ってしまう。

まとめ

以下のコマンドを実行すると、「互換性アシスタント」関連の設定が全て消える

> sc stop "PcaSvc"
> sc config "PcaSvc" start= disabled
> reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /va /f

どうなっているのか?

  • 「プログラム互換性アシスタント」はサービスとして稼動している

    • 互換性の問題で例外が発生した場合などにダイアログを出す
    • services.msc 等では「Program Compatibility Assistant Service」という名前でリストに出る
  • 「互換モード」設定はレジストリに保存される

「プログラム互換性アシスタント」サービスの状態を確認する

> sc qc "PcaSvc"

「プログラム互換性アシスタント」サービスを停止状態にする

> sc stop "PcaSvc"
> sc config "PcaSvc" start= disabled

「プログラム互換性アシスタント」サービスを実行状態にする

> sc config "PcaSvc" start= auto
> sc start "PcaSvc"

「互換モード」設定のレジストリの一覧を見る

> reg query "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"

「互換モード」設定のレジストリを消す

> reg delete "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /va /f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment