我很难纠正这个错误,该应用程序在4台不同的机器上进行了测试,并在3台机器上正常工作,但是当尝试通过WebBrower1打开页面时,一台vista PC出现此错误
解决这个问题的任何帮助对我都非常有帮助。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:
更新:
我发现我的代码不是问题,我尝试创建一个只有webBrowser的测试新表单和用于打开网页的直接URL。
网页启动,然后网页上的脚本打开一个辅助页面,似乎尝试将我的webBrowser1重定向到脚本告诉它的页面。
如果我设置webBrowser1.AllowNavigation = False我没有得到崩溃,所以当脚本试图在webBrowser1中更新时似乎发生了错误,任何人都知道如何解决这个问题?
答案 0 :(得分:4)
这是一个Vista问题,会发生的事情是我的应用程序打开一个运行java applet的网页,该applet打开运行ActiveX应用程序/脚本的外部IE网页。当ActiveX脚本尝试更新回C#应用程序的内存时,Vista中的DEP“数据执行保护”将此操作标记为Hostile / virus,并使用System.AccessViolationException结束程序:尝试读取或写入受保护的内存。这通常表明其他内存已损坏。“
我对此的解决方法是使用此行转换Vista中的DEP “bcdedit.exe / set {current} nx AlwaysOff”
然后重启机器。