現象

Visual Studio で .NET Framework 2.0 (Service Pack 1 以降) のアプリケーションを作成すると既定で NXCOMPAT フラグが有効になります。
NXCOMPAT フラグが有効な場合、その実行可能ファイルは Windows データ実行防止機能との互換性がテストされたことを意味します。
そのため該当アプリケーションはデータ実行防止 (DEP) の例外登録の対象とならず、登録しようとすると以下のエラーが発生します。

 「このプログラムは、データ実行防止 (DEP) を有効にして実行する必要があります。このプログラムでは DEP を無効にすることはできません。」

原因

.NET Framework 2.0 Service Pack 1 からコンパイラの実装が変更されており NXCOMPAT フラグが既定で有効になります。

解決方法

Visual Studio でコンパイラオプションを変更する方法はありません。ビルド後に EDITBIN ツールで NXCOMPAT フラグを無効に設定します。


Visual Studio の EDITBIN ツールで NXCOMPAT フラグを無効にする方法

DEP の例外登録が必要なアプリケーションについては、以下の手順に沿ってNXCOMPAT フラグを無効に設定します。

 1. [すべてのプログラム] - [Microsoft Visual Studio (バージョン)] の [Visual Studio Tools] から [Visual Studio コマンド プロンプト] を 選択します。

 2. 以下のコマンドを実行します。
 
    editbin.exe /NXCOMPAT:NO <application.exe>

 3. コマンド プロンプトに特にエラー等が表示されず、コマンドの実行が完了することをご確認ください。





詳細


- NXCOMPAT フラグ の確認方法
- .NET Framework 4 以降のバージョンについて



NXCOMPAT フラグ の確認方法
 

上記の設定が正常に完了したかを確認する場合には、Visual Studio に付属の DUMPBIN ツールが使用可能です。

 1. [すべてのプログラム] - [Microsoft Visual Studio (バージョン)] の [Visual Studio Tools] から [Visual Studio コマンド プロンプト] を 選択します。

 2. 以下のコマンドを実行します。 

    dumpbin /headers <application.exe>

 3. 下記 OPTIONAL HEADER VALUES の DLL characteristics 配下に "NX compatible" が表示されなければ、設定は正常に完了しています。

    Dump of file <application.exe>
    PE signature found
    File Type: EXECUTABLE IMAGE

    FILE HEADER VALUES
       < ... 略 ... >

    OPTIONAL HEADER VALUES
       < ... 略 ... >
             400 size of headers
               0 checksum
               2 subsystem (Windows GUI)
            8540 DLL characteristics
                   Dynamic base
                   No structured exception handler
                   Terminal Server Aware




 .NET Framework 4 以降のバージョンについて

.NET Framework 4.0 および .NET Framework 4.5 でも .NET Framework 2.0 SP1 以降のバージョンと同様に NXCOMPAT フラグが有効になります。
同様に、EDITBIN ツールを使用することで NXCOMPAT フラグを無効にすることが可能です。



関連情報

EDITBIN リファレンス


/NXCOMPAT オプション

ヘルプを表示

スキルを磨く
トレーニングの探索
新機能を最初に入手
Microsoft Insider に参加する

この情報は役に立ちましたか?

翻訳品質にどの程度満足していますか?

どのような要因がお客様の操作性に影響しましたか?

その他にご意見はありますか?(省略可能)

フィードバックをお送りいただきありがとうございます!

×