Ошибка: C # Попытка чтения или записи в защищенную память - PullRequest
2 голосов
/ 16 декабря 2009

Я с трудом исправляю эту ошибку, приложение протестировано на 4 разных машинах и прекрасно работает на 3 из них, но один ПК с Vista выдает эту ошибку при попытке открыть страницу через WebBrower1

любая помощь в решении этой проблемы будет очень полезна для меня.

System.AccessViolationException occurred
Message="Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
Source="System.Windows.Forms"
StackTrace:
   ved System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
   ved System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
   ved System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
   ved System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
   ved System.Windows.Forms.Application.Run(Form mainForm)
   ved Dispatcher_Tool.Program.Main() i C:\Users\norah\Downloads\Kopi av Dispacher Tool_utvikling\Dispacher Tool\Program.cs:linje 18
InnerException: 

Обновление:

Я обнаружил, что проблема не в моем коде, я попытался создать тестовую новую форму только с веб-браузером и прямым URL-адресом для открытия веб-страницы.

веб-страница запускается, затем сценарий на веб-странице открывает дополнительную страницу, которая, кажется, пытается перенаправить мой webBrowser1 на страницу, которую сценарий также сообщает.

если я установил webBrowser1.AllowNavigation = False Я не получаю Сбой, поэтому ошибка возникает, когда скрипт пытается обновиться в webBrowser1, кто-нибудь знает, как обойти это?

1 Ответ

4 голосов
/ 17 декабря 2009

Это была проблема Vista, в результате мое приложение открыло веб-страницу с Java-апплетом, который открывает внешнюю веб-страницу IE с приложением / скриптом ActiveX. Когда скрипт ActiveX пытается обновить обратно в память приложения C #, DEP «Предотвращение выполнения данных» в Vista помечает эту операцию как Hostile / virus и завершает программу с помощью System.AccessViolationException: попытка чтения или записи защищенной памяти. Это часто указывает на то, что другая память повреждена. "

Мое исправление для этого было включить DEP в Vista с этой линией "bcdedit.exe / set {current} nx AlwaysOff"

и перезагрузите машину.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...