2010-04-08 104 views
0

我的.Net程序存在严重问题。它调用本地dll,然后立即崩溃,因为它找不到本地方法。这是我们以前见过的行为,即C#编译器以其无限的智慧设置了程序兼容DEP的标志,即使它调用的本地dll显然不适用。Windows 7中的可能的数据执行保护(DEP)问题

对于此问题,我们有标准解决方法,其中标志在生成后步骤中设置为“不兼容”,并且此工作正常。除了在我的机器上以外。我有Windows 7 32位,并且该程序在我们拥有的Win 7 64位机器以及Vista和XP上都能正常工作。

但是,在我的机器上,DataExecutionPolicy_SupportPolicy为0,即我们已成功切换DEP。有没有人知道它是否仍然可以采取行动?或者其他可能具有相同效果的机制?

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

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

+0

',由此C#编译器以其无限的智慧设置程序兼容DEP的标志,即使它调用本地dll显然不是.'无论如何重写所述标志以某种方式? (我来自零经验。) – Moshe 2010-04-08 20:35:11

+0

据我所知,请参阅http://stackoverflow.com/questions/350977/how-to-make-my-program-dep-compatible/351087#351087了解如何在编译后执行此操作。 – 2010-04-09 07:27:50

+0

如果您遇到来自DEP的问题,您的原生dll已损坏。关闭DEP是一项兼容性措施。 – Yuliy 2010-04-12 08:28:22

回答

0

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

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