我在C#中编写了一个基本的Windows窗体应用程序,它具有嵌入式Web浏览器控件。我正在导航到页面以查看相机的Feed。该应用程序在Windows XP上运行正常,但在Vista上运行不正常。
在Vista上,我收到了一个AccessViolationException。这似乎与数据执行预防有关。
http://jtstroup.net/CommentView,guid,3fa30293-a3a4-4a1c-a612-058e751ad151.aspx上的文章有几个解决方案。页面底部的修复,editbin.exe / NXCOMPAT:来自Visual Studio命令提示符的NO YourProgram.exe工作正常。
但是,我想要的是使用post build事件方法,按照建议添加以下内容:
REM Mark项目为DEP不合规 调用“$(DevEnvDir).... \ VC \ bin \ vcvars32.bat” 调用“$(DevEnvDir).... \ VC \ bin \ editbin.exe”/ NXCOMPAT:NO“$(TargetPath)”
但是,当我尝试通过调试器运行程序时,这不起作用(即我得到相同的异常)。
有什么想法吗?
答案 0 :(得分:1)
关闭Visual Studio托管流程,或者将托管流程(yourapp.vshost.exe)标记为DEP不合规?
答案 1 :(得分:1)
根据this article:
因为它是在安装程序中观察到的 使用Visual Studio 2008进行项目 添加项目输出源路径 指向c:\ App \ OBJ * .exePost构建 事件将更新c:\ app \ BIN * .exe 而不是OBJ。
在设置中手动添加内置和 部署项目创建新设置 项目|添加文件|选择Build EXE 它位于Bin文件夹下
答案 2 :(得分:0)
问题。你正在尝试的vista版本。是64位吗?如果是这样,请仅将代码编译为x86并尝试。
答案 3 :(得分:0)
您正在查看的网页是否包含java小程序<applet>
?我遇到了这个确切的问题,并将其追溯到那个。这是由于使用微软JVM的WebBrowser控件,我相信现在不支持它。
答案 4 :(得分:0)
它们是ActiveX控件,而不是applet。
同样,如果我从Visual Studio命令提示符应用editbin.exe,或者如果我使用上面的post build事件,该程序仍然有效,并关闭Visual Studio Hosting Process。
当我运行创建安装/部署项目,运行安装程序,然后尝试运行它仍然崩溃的程序时。客户端计算机可能没有Visual Studio,因此我无法在部署后在目标计算机上运行editbin.exe - 它需要在安装/部署项目中触发。所以我猜测主要输出中的后期构建事件没有被触发,或者它是,并且在部署项目中重新启用了DEP。
答案 5 :(得分:0)
我必须在我的帖子构建活动中添加另一行
调用“$(DevEnvDir).. \ tools \ vsvars32.bat” editbin.exe / NXCOMPAT:NO“$(TargetPath)” editbin.exe / NXCOMPAT:NO“$(ProjectDir)obj \ $(ConfigurationName)\ $(TargetFileName)”
这会编辑obj文件夹中的exe。这似乎是我的部署项目使用的。
我从这里得到了这个想法。 Microsoft Forum