“尝试读取或写入受保护的存储器” Win7 上的错误 - ActiveX 控件失败
我们有一个 Windows 应用程序(.net、VS2010),它使用旧的包装的 ActiveX 控件(准确地说,来自 ComponentOne 的 VSPrinter 8。vsprint8.ocx)。这处理我们所有的打印和打印预览。当我们将应用程序部署并运行到 VM(32 位)上的新 Win7 实例,并执行尝试调用此控件的操作时,我们会收到以下错误:
“尝试读取或写入受保护的内存。这通常是一个错误”。表明其他内存已损坏。”
它在 Windows XP 上仍然可以正常工作。有趣的是,如果我们关闭目标 VM 上的 DEP(系统范围内,设置为 AlwaysOff),应用程序就会正常工作。但是,如果我们仅在使用 ocx 的可执行文件上关闭 DEP,则它不起作用。
有什么想法吗?谢谢!
We have a windows application (.net, VS2010) that uses an old wrapped activeX control (VSPrinter 8 from ComponentOne, to be precise. vsprint8.ocx). This handles all of our printing and print previews. When we deploy and run our application to a fresh instance of Win7 on a VM (32 bit), and do something that attempts to invoke this control, we receive the following error:
"Attempted to read or write protected memory. This is often an indication that other memory is corrupt."
It continues to work fine on Windows XP. Interestingly, if we turn off DEP on the target VM (systemwide, set to AlwaysOff), the application works. But if we turn off DEP on just the executable that uses the ocx, it doesn't work.
Any ideas? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找到了解决方案。
我无法有效地关闭相关可执行文件上的 DEP,因此我将以下行添加到 VS2010 中的构建后事件命令行中,它解决了我的问题:
在 VS 解决方案资源管理器中,右键单击解决方案下的项目,选择“属性”,然后单击“生成事件”。您将看到“构建后事件命令行:”文本框,您可以在其中插入上述内容。
这实际上禁用了我的应用程序的 DEP。这是帮助我看到曙光的博客文章。谢谢,随机的家伙!
Found a solution.
I couldn't effectively turn off DEP on the executable in question, so I added the following lines to the post-build event command line in VS2010 and it fixed my problem:
In the VS Solution Explorer, right click the project under the solution, select Properties, and click Build Events. You'll see the "Post-build event command line:" text box which is where you plug the above stuff in.
This effectively disabled DEP for my app. Here's the blog post that helped me see the light. Thanks, random dude!
http://jtstroup.net/post/Attempted-to-read-or-write-protected-memory-This-is-often-an-indication-that-other-memory-is-corrupt.aspx