1

友人のマシンで 1 つの Windows フォーム アプリを作成します。彼のマシンでは問題なく動作します。しかし、自分のマシンで同じアプリを実行しようとすると、_dialog.ShowDialog()「アクセス違反例外が保護されたメモリの読み取りまたは書き込みを試みました。これは多くの場合、他のメモリが破損していることを示しています...」のような例外がスローされました。ネットでこのエラーを確認したところ、次の解決策が見つかりました。

1) [ツール] メニュー -> [オプション] -> [デバッグ] -> [全般] -> [モジュールの読み込み時に JIT 最適化を抑制する] リンクのチェックを外します: http://social.msdn.microsoft.com/Forums/en-US/8789ea67-fbc5- 4a7b-a4eb-d4a8a050d5c1/attempt-to-read-or-write-protected-memory-this-is-indicating-that-other-memory-is-corrupt . 私のマシンで完了しましたが、うまくいきませんでした。

2)保護されたメモリの読み取りまたは書き込みを試みました。フレームワーク 2.0、..3.5 用のhttp://support.microsoft.com/kb/971030をインストールしましたが、言及リンクからダウンロード製品が見つかりません。

私のマシン構成: VS 2010(SP1)、フレームワークは 4.0 を使用、DB は MS-Access を使用しました。

コードのブロック:

    private void SetAttachmentInfo()
    {
        Dictionary<string, object> _fileInfo = new Dictionary<string, object>();
        OpenFileDialog _dialog = new OpenFileDialog();

        var _fileName = (object)(null);
        var _fileData = (object)(null);
        var _fileDataLength = (object)(null);

        _dialog.Multiselect = false;
        _dialog.Filter = "Office Files (*.doc;*.xls;*.ppt;*pdf;*txt) |*.doc;*xlsx;*.xls*.ppt;*pdf;*.txt;|Image Files (*.jpeg;*.png;*.jpg;*.gif) |*.jpeg;*.png;*.jpg;*.gif |All File|*.*";

        if (_dialog.ShowDialog() != DialogResult.Cancel)
        {
            _fileInfo = GetAttachmentFileInformation(_dialog.FileName);
            _fileInfo.TryGetValue("FileName", out _fileName);
            _fileInfo.TryGetValue("FileData", out _fileData);
            _fileInfo.TryGetValue("Lenght", out _fileDataLength);
            FileName = Convert.ToString(_fileName);
            FileData = (_fileData != null && (_fileDataLength as int?) > 0) ? (byte[])_fileData : (byte[])null;
            AttachmentLength = _fileDataLength as int?;
        }
    }

役立つヘルプはありますか?

4

1 に答える 1

1

DEP 設定をオフにすると、問題が解決する場合があります。Windows (スタート) > すべてのプログラム > アクセサリをクリックし、コマンド プロンプトを右クリックし、[管理者として実行] をクリックして、昇格したコマンド プロンプトから DEP をオフにします。bcdedit.exe /set {current} nx AlwaysOff (4 つのスペースに注意してください) と入力し、Enter キーを押します。オンに戻すには、AlwaysOff を AlwaysOn に変更します。変更を行った後、システムを再起動する必要があります。

于 2016-04-08T07:10:59.480 に答える