2016-03-03 139 views
2

好吧,这是我们办公室新机器上新安装的Windows 8.1。我们在其上安装了Office Professional Plus 2013,一切看起来都很美观。不过,我得到以下错误:Outlook Com没有注册

enter image description here

一切我已经研究说,有一个在注册表中的旧面貌值。 9.3,9.4等。但这台电脑从来没有什么,但它的Outlook 2013,我可以找到每个注册表值是9.5。

我正在开发一个应用程序,用于预先编写我们发送给客户端更新时发送的标准电子邮件。在C#中,相关代码如下所示:

string Body = Head + FileList + details + EmailPart + Signature; 

Outlook.Application OLapp = new Outlook.Application(); 
MailItem eMail = OLapp.CreateItem(Outlook.OlItemType.olMailItem); //this is the line that causes the error. 
eMail.Subject = "subject"; 
eMail.To = ""; 
eMail.HTMLBody = Body; //text created above 
eMail.Importance = OlImportance.olImportanceNormal; 

eMail.Display(); 

这适用于办公室中除本64位W8盒以外的所有机器。我不知所措,我已经修复并重新安装了Professional Plus 2013套装,但无济于事。 com对象应该在istall上注册,我无法手动注册它。我试图在VS中瞄准X86无济于事。我一直在这个问题上打了几个星期,所以我很难过。有没有人解决这个问题,它不是一个价值:9.3/9.4注册表问题?

也许有办法做到这一点,不使用COM而是使用DLL?任何让这个用户离开地面的东西都会有帮助。谢谢。

+0

在Windows 64Bit机器上你将不得不做1件事之一.. '1.'右键单击项目属性并将其设置为从'AnyCpu运行到x86'或'2.'确保.dll的'CopyLocal ='属性设置为true,如果您想确保它真的有效,创建一个'Dependencies'文件夹,并将该dll添加到它..然后从引用节点删除引用,并重新添加它指向'Dependencies'文件夹中的源..这也听起来像你引用不正确的版本的ComInterop Dll为您安装的Office版本 – MethodMan

+0

感谢您的建议@MethodMan 不幸的是,正如我在OP中提到的那样,我的目标x86无济于事。在#2中我不知道你在说什么.dll,如果我查看我的引用,我不能将任何Outlook interloop程序集的CopyLocal设置为true,因为属性被锁定。 我试过两个程序集引用Microsoft.Office.Interlop.Outlook 15.0.0.0版本,我试过COM Micosoft Outlook 15.0对象库9.5版本。 这两种方法都适用于本地和其他机器,但不适用于相关包装盒。 – Andrew

+0

分享到:[访问COM组件时出错](http://stackoverflow.com/q/12957595/993547)。 –

回答

2

已解决!

感谢发布的答案here我被置于寻找解决方案的正确轨道上。

总之问题不在于注册表中存在多个键或无效键,而是在注册表中的特定位置缺少一个键。特别是在HKEY_CLASSES_ROOT \的TypeLib \

在长: 我的错误指出我朝着键{0006001-0000-0000-C000-000000000046}一切我能在网上找到然后朝键HKEY_CLASSES_ROOT \接口指出{0006001-0000 -0000-C000-000000000046}

最常见的问题是,当您有多个版本条目,9.5,9.4等您必须删除无效的版本。对于我的问题,只有一个版本,9.5。

我搜索了其他{0006001-0000-0000-C000-000000000046}项,他们每个人都只有一个版本,9.5

答案链接上面有什么要我做的是去除无效版本HKEY_CLASSES_ROOT \ TypeLib {0006001-0000-0000-C000-000000000046}尽管一个问题......密钥不存在。 AHA!

我使用HKEY_CLASSES_ROOT \ TypeLib {00062FFF-0000-0000-C000-000000000046}(引用我的程序使用的MSOUTL.OLB的键)手动创建密钥来构建缺少的密钥。 (我不知道一种方法来复制注册表中的整个密钥)

一旦我这样做了,我需要重新启动计算机,一旦重新启动程序完美无瑕。

显然Office365在安装过程中会错过这个位置。谢天谢地,我可以把这个近乎长达一个月的瘟疫从我开始质疑我身后的代码!希望这有助于未来的其他人!