2013-08-05 4 views
1

Я создаю одно приложение Windows Form на машине для своих друзей. Он отлично работает на своей машине. Но когда я попытался запустить такое же приложение на своей собственной машине, то из строки _dialog.ShowDialog() возникло исключение, подобное «accessviolationexception», пытающееся читать или записывать защищенную память, что часто свидетельствует о том, что другая память повреждена ... ». Я проверяю эту ошибку в сети, и я нашел следующие решения:Accessviolationexception попытался прочитать или записать защищенную память

1) Меню «Сервис» -> Параметры -> Отладка -> Общие -> Снимите эту опцию «Подавить оптимизацию JIT на нагрузке модуля»: http://social.msdn.microsoft.com/Forums/en-US/8789ea67-fbc5-4a7b-a4eb-d4a8a050d5c1/attempt-to-read-or-write-protected-memory-this-is-often-an-indicating-that-other-memory-is-corrupt. Сделано на моей машине, но не работало.

2) Attempted to read or write protected memory, Установите http://support.microsoft.com/kb/971030 для фреймворка 2.0, .. 3.5, но я не нахожу ни одного из загружаемого продукта из ссылки ссылки.

Моя конфигурация машины: 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?; 
     } 
    } 

Любая полезная помощь?

ответ

1

Отключение настроек DEP может решить вашу проблему. Выключите DEP с помощью расширенной командной строки, нажав кнопку «Windows» («Пуск»)> «Все программы»> «Стандартные» и щелкните правой кнопкой мыши «Командная строка», затем «Запуск от имени администратора». Введите bcdedit.exe/set {current} nx AlwaysOff (обратите внимание на четыре пробела) и нажмите Enter. Чтобы включить его, измените AlwaysOff на AlwaysOn. После внесения изменений вам необходимо перезагрузить систему.

Смежные вопросы