【问题标题】:Possible Data Execution Prevention (DEP) problem in Windows 7Windows 7 中可能存在的数据执行保护 (DEP) 问题
【发布时间】:2011-02-05 14:35:39
【问题描述】:

我的 .Net 程序存在严重问题。它调用本机 dll,然后由于找不到本机方法而立即崩溃。这是我们之前看到的行为,C# 编译器以其无限的智慧设置程序与 DEP 兼容的标志,即使它调用的本机 dll 显然不兼容。

我们对此有标准的解决方法,在构建后步骤中将标志设置为 Not DEP Compatible,这可以正常工作。除了在我的机器上,到处都是。我有 Windows 7 32 位,该程序在我们拥有的 Win 7 64 位机器以及 Vista 和 XP 上运行良好。

但是,在我的机器上,DataExecutionPolicy_SupportPolicy 为 0,即我们已成功关闭 DEP。有谁知道在某些情况下它仍然可以起作用吗?或者任何其他可能具有相同效果的机制?

我们现在还检查了另一台新安装的 Win7 32 位机器(也是我的 Thinkpad),它也可以在那里工作。我们比较了所有的 BIOS 设置,它们是相似的(我的是 T61,另一个是 R60)。

当从本机程序调用时,有问题的 dll 在我的机器上也可以正常工作。我们的想法已经用完了...任何帮助将不胜感激!

【问题讨论】:

  • , whereby the C# compiler, in its infinite wisdom, sets the flag that the program is DEP compatible, even if it calls a native dll which patently is not. 无论如何以其他方式覆盖上述标志? (我在这里的经验为零。)
  • 据我所知没有;编译后怎么做,见stackoverflow.com/questions/350977/…
  • 如果您在 DEP 中遇到问题,则您的本机 dll 已损坏。关闭 DEP 是一种兼容性措施。
  • ...没有损坏,丢失了。请参阅我接受的答案。

标签: .net windows-7 crash data-execution-prevention


【解决方案1】:

好吧,问题毕竟是完全不同的东西。我的机器是唯一没有正确设置本机 dll 路径的机器;这导致在 Win7 中立即崩溃,而在 XP 中曾经有一个消息框给出(高度神秘的)发生了什么的想法。

所以我们可以免除 DEP 的任何责任。我把它留在标题中,以便其他有同样怀疑的人记得检查他们的文件路径!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多