C++ CRXIR2不';不能在Windows 7和Vista上使用VS2010

C++ CRXIR2不';不能在Windows 7和Vista上使用VS2010,c++,visual-studio-2010,crystal-reports,uac,C++,Visual Studio 2010,Crystal Reports,Uac,我们正在从VS2005升级到VS2010。 我们快到了,但是Crystal Reports有一个问题。 我们在我们的C++应用程序中使用RDC(COM)组件。 在Windows7或VISTA上,我无法使查看器或设计器控件正常工作。 当控件被激活时,我会遇到访问冲突: // from atlhost.h (line 2208) hr = m_spOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, spClientSite, 0, m_hWnd,

我们正在从VS2005升级到VS2010。 我们快到了,但是Crystal Reports有一个问题。 我们在我们的C++应用程序中使用RDC(COM)组件。 在Windows7或VISTA上,我无法使查看器或设计器控件正常工作。 当控件被激活时,我会遇到访问冲突:

// from atlhost.h (line 2208)
hr = m_spOleObject->DoVerb(OLEIVERB_INPLACEACTIVATE, NULL, spClientSite, 0, m_hWnd, &m_rcPos);
奇怪的是,当我在XP机器上运行相同的exe时,它似乎可以工作

我们基本上使用“AtlAxWin100”窗口类在中托管Crystal报表控件(“CrystalReports11.ActiveXReportViewer.1”)。 我使用的是SP6版本的Crystal reports,这是最新版本

另外,当我用VS2005编译相同的代码并在Windows7或Vista上运行时,一切都很好


有人知道问题的原因吗?或者有人有进一步调查的想法吗?

看起来这与DEP有关

如果我们完全关闭系统上的DEP

bcdedit /set Nx AlwaysOff
然后,当然, 观众工作

不幸的是,这是一个系统全局关闭。
我们以前曾试图单独为exe关闭DEP,但后来从Windows收到一条消息,我们不允许为exe关闭DEP…

SAP认为RDC已死亡

[……以后……]


这些信息中的大部分至少有六个月的历史。

我们无法将其关闭的原因可能是我们的exe中还有.NET代码。但是,对于editbin.exe/NXCOMPAT:NO myExe.exe,您只能为exe关闭它!在Visual Studio中,您可以在配置属性->链接器->高级->数据执行预防(DEP)->/NXCOMPAT:NO中关闭应用程序的DEP