.net - Win7 上的 "Attempted to read or write protected memory"错误 - activeX 控制失败

标签 .net winforms windows-7 activex

我们有一个 Windows 应用程序(.net,VS2010),它使用旧的包装 ActiveX 控件(来自 ComponentOne 的 VSPrinter 8,准确地说是 vsprint8.ocx)。这处理我们所有的打印和打印预览。当我们在 VM(32 位)上部署和运行我们的应用程序到一个新的 Win7 实例,并尝试调用此控件时,我们收到以下错误:

“尝试读取或写入 protected 内存。这通常表明其他内存已损坏。”

它继续在 Windows XP 上正常工作。有趣的是,如果我们关闭目标 VM 上的 DEP(系统范围内,设置为 AlwaysOff),应用程序就可以工作。但是如果我们只在使用 ocx 的可执行文件上关闭 DEP,它就不起作用。

有任何想法吗?谢谢!

最佳答案

找到了解决办法。

我无法有效地关闭有问题的可执行文件上的 DEP,所以我在 VS2010 的构建后事件命令行中添加了以下几行,它解决了我的问题:

call "$(DevEnvDir)\..\..\VC\bin\vcvars32.bat"
call "$(DevEnvDir)\..\..\VC\bin\editbin.exe" /NXCOMPAT:NO "$(TargetPath)"

在 VS 解决方案资源管理器中,右键单击解决方案下的项目,选择属性,然后单击生成事件。您将看到“构建后事件命令行:”文本框,您可以在其中插入上述内容。

这有效地禁用了我的应用程序的 DEP。这是帮助我看到光明的博客文章。谢谢,随机伙计!

http://jtstroup.net/post/Attempted-to-read-or-write-protected-memory-This-is-often-an-indication-that-other-memory-is-corrupt.aspx

关于.net - Win7 上的 "Attempted to read or write protected memory"错误 - activeX 控制失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4675157/

相关文章:

.net - WinForms:设计与代码

c# - Windows 窗体是否有任何开源或免费的图形/报告/图表框架?

.net - 如何将WPF应用程序制作为可以嵌入MS Excel中的OLE对象?

.net - HTTPS 和摘要认证

c# - 如何制作类似聊天的界面/显示?

c# - 在面板 C# 中调整嵌入式用户控件的大小

windows-7 - Git ssh.exe 已停止工作

file - Eclipse和Windows 7

vb6 - 在windows 7下从VB6运行activex dll

c# - 我们怎样才能加快从 MSMQ 接收消息的速度?