Возможная проблема предотвращения выполнения данных (DEP) в Windows 7 - PullRequest
0 голосов
/ 08 апреля 2010

У меня серьезная проблема с моей программой .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 Ответ

0 голосов
/ 12 апреля 2010

ОК, проблема была в конце концов, что-то совершенно другое.Моя машина была единственной, где путь к родным dll не был установлен правильно;это привело к мгновенному сбою в Win7, в то время как в XP раньше было окно сообщения, дающее (весьма загадочное) представление о том, что произошло.

Так что мы можем снять DEP с любой вины.Я оставляю это в заголовке, чтобы другие люди с таким же подозрением не забывали проверять пути к своим файлам!

...