2010-12-15 43 views
1

我有.NET控制台应用程序和COM对象我想通过实例:COM对象不能被创建时,我升级客户端.NET Framework版本

var t = Type.GetTypeFromProgID("myProgID"); 
var o = Activator.CreateInstance(t); 

一切,当客户端平台的.NET Framework工作正常3.5,但是当我将版本号升级到4.0时崩溃

检索具有CLSID {xxx-xxx}的组件的COM类工厂失败,原因如下:80004005(E_FAIL)?

COM对象与.Net框架内置3.5

我要做些什么,使我的COM对象使用吗?

预先感谢您!

+0

您是否使用64位版本的Windows?当您切换回.NET 3.5时,它会再次运行? – 2010-12-15 13:36:06

+0

不可以。它是32位平台上的Windows XP – 2010-12-15 13:39:56

回答

1

答案是 - Avira Antivirus!

与杀毒软件的另一个问题是说明如下: (SEH)Exception initializing Nlog

我卸载那个,结果发现,一切都变得美好!

0

好像GUID改变了。你确定它正在查找正确的GUID,并且COM对象是使用该GUID注册的吗?

+0

我所做的 - 更改客户端应用程序.net框架版本。 GUID保持不变。 – 2010-12-15 13:36:45

1

该错误消息是无望的,您需要调试COM服务器以查看发生了什么问题。如果您没有它的源代码,那么您可能会从SysInternals的ProcMon中获得一些踪迹。实际上,您需要组件供应商或作者的帮助。

+0

谢谢,@Hans,我是供应商 - 我应该检查什么? – 2010-12-15 14:25:51

+0

从你的COM类的构造函数开始,如果你有一个类工厂。检查你的QI执行是否被奇数IID命中。 – 2010-12-15 14:30:50

+0

类工厂实现对我来说是隐藏:( – 2010-12-15 14:34:12