应用程序与windows服务器上的Crystal Reports ActiveX Designer运行库崩溃



我需要与用Visual Basic 6编写的遗留软件通信,以便从.net应用程序(使用完整的框架4.5(启动报告(以pdf格式输出(。我必须安装一个ActiveX COM Dll,它在内部使用COM Crystal Report 11运行时对象。

我的.net应用程序(其项目目标是x86平台(实例化COM Dll"MyInterop.Dll",其中包含运行作业的类"Ambient"。。这样做(简化代码(:

Type type = Type.GetTypeFromProgID("MyInterop.Ambient", true);
printerObj = Activator.CreateInstance(type);
printerObj.init();
printerObj.print();

如果我在桌面系统上运行应用程序(在Windows 8.1上(,一切都很好!

如果我在Windows Server 2012 R2上移动应用程序(但我也尝试过使用Windows Server 2016(,它会崩溃!我无法获得详细的错误,我得到"vshost32.exe已停止工作"。

调试起来并不容易,但当COM dll中包含的代码试图读取报告查询字符串时,它似乎会崩溃

query = CRAXDRT.Report.SQLQueryString

(但是CRAXDRT,我在Dll-Com项目上找到了一个参考"程序文件(x86(\Common Files\Business Objects\3.0\bin\craxdrt.dll#Crystal Reports ActiveX Designer运行时库11.0"(

我不明白为什么在windows服务器系统上,试图读取查询字符串会导致应用程序崩溃。。我不知道在哪里查信息。。非常欢迎任何建议

提前感谢

最后我找到了解决方案:

1( 首先,我必须用以下命令(从VS cmd提示符(修改我的.net应用程序的exe二进制文件:editbin.exe/NXCOMPAT:NO[my binary path]
2(将exe添加到DEP异常(在"高级系统设置"->"性能选项"->"数据执行防止"上(

那就行了!

最新更新