コマンドラインから実行可能ファイルの互換モードを設定するにはどうすればよいですか?


20

コマンドラインから実行可能ファイルにXPオプションと互換性を設定する方法はありますか(右クリック/プロパティ/互換性...その1つ、はい:)?

または、さらに良いことに、ディレクトリ全体(ディレクトリ内の実行可能ファイル)に互換性を設定して、コンパイル/ビルドするすべての実行可能ファイルに既にその「フラグ」が付いているようにする方法はありますか?


1
@CodyGray-古いコンパイラIDE(Win95から)を使用しているため。新しいものに変更すると、現在準備ができていない費用が発生します。IDEからビルドして起動すると、全体がクラッシュします。互換性を置いてエクスプローラから起動すると、機能します。これで十分です。ビルド後に毎回互換性フラグを付けるのが好きではないのは私だけです。したがって、質問... :)
ルーク

1
@CodyGray-さて、話の全体をお伝えできますが、ここ(または3つ)のコメントボックスに収まるとは思わないので、しばらく質問を開いたままにします...
ルーク

1
ああ、私は記事でそれを読んだことを思い出したことを知っていました。私はついにそれを見つけ、後世への答えを投稿しました。:-)私のしつこいことは無視してかまいませんが、別のアプローチを見つけることは真剣に疑います。
コーディグレー

回答:


28

アプリケーションの互換性フラグを設定または変更できるツールがわかりません。

ただし、アプリケーション互換フラグはレジストリ(ユーザーまたはシステム部分)に保存されます。

HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers

したがって、必要なエントリを作成するには、標準のコマンドラインレジストリエディタを使用できます。

reg.exe Add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Program Files\MyApp\Test.exe" /d "WINXPSP3"

使用可能なフラグの詳細については、ブログ投稿「管理者としてまたは互換モードでアプリケーションを実行する」を参照してください。


1
うーん、これはちょうどかもしれません(!)...その3行目の「reg.exe ...」...あるディレクトリにあるすべてのexeに設定すると、その実行可能ファイルに「添付されたまま」になります再構築する場合は?
ルーク

2
右クリック>プロパティ>互換性の通常の動作は、「すべてのユーザーの設定を変更」ボタンが押されない限り、HKCUの下にキーを設定することです。その後、すべてのユーザーのHKLMの下に設定され、ダイアログから変更することはできません。
マイクブラウン


11

ロバートの答えは正しかった。少し拡張して、モードの一括設定に関するOPの質問に答えるには...

処理する.exeファイルでいっぱいのフォルダーがある場合、これを行うことができます。

for %x in ("*.exe") do reg.exe Add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx" /d "WINXPSP3"

この例では、HKLMではなくHKCUを使用しています。本当に欲しいものを選んでください。

設定を削除するには、各設定の確認プロンプトで:

for %x in ("*.exe") do reg.exe Delete "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "%~fx"

/f確認を求められない場合は最後に追加します。

(この回答に賛成票を投じる場合は、ロバートも投票してください!)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.