2016-03-03 140 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在安裝過程中會錯過這個位置。謝天謝地,我可以把這個近乎長達一個月的瘟疫從我開始質疑我身後的代碼!希望這有助於未來的其他人!