「ソフトを使っていたらエラーが出て強制終了する」とのHELP要請を受けました。
強制終了の原因は様々なので、まずは強制終了する画面を確認します。
Contents
強制終了の原因は「データ実行防止」
強制終了した時の画面がこちら。
ダイアログのタイトルに「データ実行防止」とあります。
この「データ実行防止」とはなんでしょうか?
データ実行防止(DEP : Data Execution Prevention)
データ実行防止はWindowのセキュリティ機能の一つです。
アプリケーションやサービスが実行不可能な領域のメモリを使うことを防ぐ機能で、ある種の攻撃(バッファオーバーフロー等)に対して有効な手段です。
Windows Serverではすべてのプログラムが対象となっていますが、それ以外(Windows 7/8/10等)は重要な Windows のプログラムおよびサービスに限定されています。
ところが、システムに深く関係するアンチウイルスソフトなどはこの影響を受けて異常終了する場合もあるようです。
今回、問題となっているソフトはある業界向けのパッケージソフトで、セキュリティに関連するようなものではないですが、何かしらシステムに絡むような機能を持っているのかもしれません。
設定を確認する
データ実行防止機能の設定は以下の手順で確認できます。
[コントロールパネル] → [システムとセキュリティ] → [システム] → [システムの詳細設定]を開きます。
[パフォーマンス]の[設定…]ボタンを押してパフォーマンスオプションを表示します。
[データ実行防止]タブを表示します。
通常は[重要な Windows のプログラムおよびサービスについてのみ有効にする]がONになっているはずです。
Windows Serverの場合は[次に選択するもの・・・]がONになっていると思います。
データ実行防止で強制終了する場合の対策方法
今回の問題の対策は、データ実行防止の設定を変更することで行います。
設定画面の[次に選択するもの・・・]をONにすると、その下のリストとボタンが有効になるので、[追加]ボタンを押します。
そして対象となるプログラムを選択します。
パフォーマンスオプション画面をOKボタンで閉じれば完了です。
これでデータ実行防止による強制終了は回避できます。
データ実行防止の対象外として選択できない場合
今回は大丈夫でしたが、稀にデータ実行防止の対象外としてプログラムを選択しても、
「このプログラムは、データ実行防止 (DEP) を有効にして実行する必要があります。このプログラムでは DEP を無効にすることはできません。」
とエラーメッセージが表示され追加できない場合があります。
これは対象とするプログラムの作り方に問題があります。
「editbin.exe」というツールを使えば、データ実行防止の対象外とすることができるかもしれませんが、Visual Studioに含まれるツールとして提供されているので、Microsoftの公式サイトからダウンロードはできません。
このエラーが出た場合、基本的には対処のしようがないので、作成した会社や個人に連絡して対応してもらうことが一番いいと思います。
コメント