2011-01-12 15 views
4

我們有一個Windows應用程序(.NET,VS2010),其使用從ComponentOne的舊包裹ActiveX控件(VSPrinter 8,確切地說vsprint8.ocx )。這處理我們所有的打印和打印預覽。當我們在虛擬機(32位)上部署並運行我們的應用程序到Win7的新實例,並嘗試調用此控件時,我們會收到以下錯誤:「嘗試讀取或寫入受保護的存儲器」上的Win7錯誤 - ActiveX控件失敗

「試圖讀取或寫入受保護的內存。這通常表明其他內存已損壞。「

它繼續在Windows XP上正常工作。有趣的是,如果我們關閉目標虛擬機上的DEP(系統範圍,設置爲AlwaysOff),該應用程序就可以工作。但是,如果我們只關閉使用ocx的可執行文件的DEP,則不起作用。

任何想法?謝謝!

回答

5

實測值的溶液中。

我不能有效關閉DEP對有問題的可執行文件,所以我增加了以下線在VS2010的生成後事件命令行,它的固定我的問題:

call "$(DevEnvDir)\..\..\VC\bin\vcvars32.bat" 
call "$(DevEnvDir)\..\..\VC\bin\editbin.exe" /NXCOMPAT:NO "$(TargetPath)" 

在VS在解決方案資源管理器中,右鍵單擊解決方案下的項目,選擇屬性,然後單擊生成事件你會看到「生成後事件命令行:」文本框這是你插在上面的東西

這有效地禁用DEP我的應用程序。這是幫助我看到光明的博客文章。謝謝,隨意的夥計!

http://jtstroup.net/post/Attempted-to-read-or-write-protected-memory-This-is-often-an-indication-that-other-memory-is-corrupt.aspx

+1

不要忘了接受你的答案回答你的問題。 ;>發生在TFS團隊 – dthorpe 2011-01-14 01:26:43

相關問題