Возможная проблема предотвращения выполнения данных (DEP) в Windows 7
У меня серьезная проблема с моей программой.Net. Он вызывает собственный dll, а затем мгновенно падает, потому что не может найти собственный метод. Это поведение, которое мы видели ранее, когда компилятор C# в своей бесконечной мудрости устанавливает флаг, что программа совместима с DEP, даже если она вызывает нативный dll, который явно не является.
У нас есть стандартный обходной путь для этого, когда в шаге после сборки установлен флаг "Не DEP-совместимо", и это прекрасно работает. Везде кроме как на моей машине. У меня Windows 7 32bit, и программа прекрасно работает на 64-битных машинах Win 7, которые у нас есть, а также на Vista и XP.
Однако на моей машине DataExecutionPolicy_SupportPolicy равен 0, т. Е. Мы успешно отключили DEP. Кто-нибудь знает, есть ли какая-то ситуация, в которой он еще может действовать? Или любой другой механизм, который может иметь такой же эффект?
Мы также проверили на другой недавно установленной 32-битной машине Win7 (также как Thinkpad, как у меня), и она также работает там. Мы сравнили все настройки BIOS, и они похожи (у меня T61, другой R60).
Рассматриваемая DLL также отлично работает на моей машине, когда вызывается из родной программы. У нас заканчиваются идеи... любая помощь будет высоко ценится!
1 ответ
ОК, проблема была в конце концов что-то совершенно другое. Моя машина была единственной, где путь к родным dll не был установлен правильно; это привело к мгновенному сбою в Win7, в то время как в XP раньше было окно сообщения, дающее (весьма загадочное) представление о том, что произошло.
Таким образом, мы можем освободить DEP от любой вины. Я оставляю это в заголовке, чтобы другие люди с таким же подозрением не забывали проверять пути к файлам!