【问题标题】:AccessViolationException with a webbrowser in a windows formAccessViolationException 与 Windows 窗体中的 Web 浏览器
【发布时间】:2009-02-03 22:23:25
【问题描述】:

我用 C# 编写了一个基本的 Windows 窗体应用程序,它具有嵌入式 Web 浏览器控件。我正在导航到一个页面以查看相机的提要。该应用程序在 Windows XP 上运行良好,但在 Vista 上却不行。

在 Vista 上,我收到 AccessViolationException。这似乎与数据执行保护有关。

http://jtstroup.net/CommentView,guid,3fa30293-a3a4-4a1c-a612-058e751ad151.aspx 的文章有几个解决方案。页面底部的修复,来自 Visual Studio 命令提示符的 editbin.exe /NXCOMPAT:NO YourProgram.exe 工作得很好。

但是,我想使用构建后事件方法,按照建议添加以下内容:

REM 将项目标记为 DEP 不合规 调用“$(DevEnvDir)....\VC\bin\vcvars32.bat” 调用 "$(DevEnvDir)....\VC\bin\editbin.exe" /NXCOMPAT:NO "$(TargetPath)"

但是,当我尝试通过调试器运行程序时,这不起作用(即我得到相同的异常)。

有什么想法吗?

【问题讨论】:

标签: c# winforms webbrowser-control data-execution-prevention


【解决方案1】:

根据this article

因为它是在安装程序中观察到的 使用 Visual Studio 2008 进行的项目 添加项目输出源路径 指向 c:\App\OBJ*.exePost Build 事件将更新 c:\app\BIN*.exe 而不是 OBJ。

在 setup 中手动添加构建和 部署项目创建新设置 项目 |添加文件 |选择构建 EXE 在 Bin 文件夹下

【讨论】:

    【解决方案2】:

    关闭 Visual Studio 托管进程,或者将托管进程 (yourapp.vshost.exe) 标记为不符合 DEP?

    【讨论】:

      【解决方案3】:

      问题。您正在尝试的 vista 版本。是64位的吗?如果是这样,请将代码仅编译为 x86 并尝试。

      【讨论】:

        【解决方案4】:

        您正在查看的页面是否包含 java 小程序 <applet>?我遇到了这个确切的问题并追溯到它。这是由于 WebBrowser Control 使用 Microsoft 的 JVM,我相信现在不支持。

        【讨论】:

          【解决方案5】:

          它们是 ActiveX 控件,而不是小程序。

          同样,如果我从 Visual Studio 命令提示符应用 editbin.exe,或者如果我使用上述构建后事件并关闭 Visual Studio 托管进程,则程序可以工作。

          当我运行创建一个设置/部署项目,运行安装程序,然后尝试运行它仍然崩溃的程序时。客户端计算机可能没有 Visual Studio,因此我无法在部署后在目标计算机上运行 editbin.exe - 它需要在设置/部署项目中触发。所以我猜测要么主输出中的构建后事件没有被触发,要么就是在部署项目中重新启用了 DEP。

          【讨论】:

            【解决方案6】:

            我不得不在我的后期构建事件中添加另一行

            调用“$(DevEnvDir)..\tools\vsvars32.bat” editbin.exe /NXCOMPAT:NO "$(TargetPath)" editbin.exe /NXCOMPAT:NO "$(ProjectDir)obj\$(ConfigurationName)\$(TargetFileName)"

            这将编辑 obj 文件夹中的 exe。这似乎是我的部署项目使用的。

            我从这里得到了这个想法。 Microsoft Forum

            【讨论】:

              猜你喜欢
              • 2023-04-09
              • 1970-01-01
              • 2014-09-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-03-13
              • 1970-01-01
              • 2020-04-01
              相关资源
              最近更新 更多