2010-04-08 97 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。我將其留在標題中,以便其他懷疑相同的人記得檢查他們的文件路徑!