我的.Net程序遇到严重问题。它调用一个本机dll,然后由于找不到本机方法而立即崩溃。这是我们之前所见的行为,因此C#编译器以其无穷的智慧将标志设置为该程序与DEP兼容,即使该程序调用的本机DLL显然不兼容。
我们有标准的解决方法,将标记在构建后的步骤中设置为“不兼容DEP”,并且效果很好。除了我的机器上的任何地方。我有Windows 7 32bit,并且该程序在我们拥有的Win 7 64bit机器以及Vista和XP上都可以正常运行。
但是,在我的计算机上,DataExecutionPolicy_SupportPolicy为0,即我们已成功关闭了DEP。有谁知道它在某些情况下仍然可以采取行动?或任何其他可能具有相同作用的机制?
现在,我们还检查了另一台新安装的Win7 32位计算机(也像我的ThinkPad),它也可以在这里运行。我们比较了所有的BIOS设置,它们是相似的(我的是T61,其他是R60)。
从本地程序调用时,有问题的dll在我的机器上也可以正常工作。我们的想法不多了,任何帮助将不胜感激!
最佳答案
好吧,问题毕竟出在完全不同的地方。我的机器是唯一未正确设置本机dll路径的机器。这导致Win7中立即崩溃,而在XP中,过去曾经是一个消息框,给出了所发生事件的(高度神秘的)想法。
因此,我们可以免除DEP的任何责备。我将其保留在标题中,以便其他有相同怀疑的人记得检查其文件路径!
关于.net - Windows 7中可能的数据执行保护(DEP)问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2598457/