Windows 7 / Win Server 2008中实例化的COM运行时异常

时间:2011-06-07 09:57:59

标签: .net com interop com-interop

您可能会对此页面提出一些建议: http://www.echelon.com/support/kb/solution.asp?solutionID=668

这个页面几乎准确描述了我的情况。但是那里的指南并不合适。

  1. 我可以看到,DEP无法在W7 / WS2008中关闭。

  2. 在VS2010中,editbin(及其使用的方式)似乎是重新编号

  3. 有传言说NXCOMPAT不再有效了吗?

  4. 一点问题描述,
    大约2000年的旧DLL文件(可能是C ++,但也可以是VB6)。它是一个Interop COM DLL,已在我们旧的(VB6)环境中使用了好几年。 DLL通过"选择工具箱项/ COM组件"附加在VS中。然后将dll作为Reference添加到项目中。我将声明此代码从控制台应用程序运行(以避免任何与IIS相关的错误)。

    当代码尝试加载对象的实例时,会显示错误。

    Creating an instance of the COM component with CLSID {104B7F00-06EE-11CF-9AE0-0020AFD34749} from the IClassFactory failed due to the following error: 80040023.

    你有什么想法? 你是如何解决你的COM问题的(在Windows 7 / Vista / Win Srv 2008中?)?

2 个答案:

答案 0 :(得分:0)

提示:
- 检查运行时模块;
- 使用取决于发现丢失的模块;
- 使用tips in this link互操作32/64位;

答案 1 :(得分:0)

1)我似乎不明白“我可以看到,DEP无法在W7 / WS2008中关闭。”是的,您可以在Win7中禁用DEP。请看这里:http://www.fanhow.com/knowhow:Enable_or_Disable_DEP_in_Windows_7_27019737 2)editbin存在于VS2010中(根据您的安装驱动器更改此路径):C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin \ editbin.exe。打开Visual Studio命令提示符,您应该只使用它而不知道它的路径。 3)我认为不是这样的。否则,将不推荐使用此开关。 MSDN文档似乎没有暗示:http://msdn.microsoft.com/en-us/library/ms235442(v=vs.100).aspx

GUID和错误消息都表明您正在处理专有组件。因此,除了您在问题编写中提到的文档之外,这里没有帮助。因此,另一个想法是将WinDbg连接到进程并查看异常的真正来源。但是,如果没有专有组件的符号/来源来识别和修复问题,那么这似乎是一项非常重要的任务。