簡體   English   中英

注冊為客戶端計算機上注冊的Excel編寫的COM服務器時出現問題(無法設置mscoree.dll的完整路徑)

[英]Problem registering a COM server written for Excel registered on client machine (can't set full path to mscoree.dll)

在上一個問題中,< 如何獲取以VB.NET編寫的Excel COM Server安裝並在Automation Servers列表中注冊? >有一個示例,說明了如何使用VS 2008創建注冊表項的完整路徑。上一個答案中的所有內容均正常運行,但我為mscoree.dll設置的完整路徑(使用VS中的注冊表編輯器)不起作用(意味着它似乎無能為力)。

完整的注冊表路徑為:

HKEY_CLASSES_ROOT \\ CLSID \\ {my_GUID} \\ InprocServer32 \\(默認值)

我設置的值是:

[SystemFolder] mscoree.dll

我可以放置任何內容(包括對完整路徑進行硬編碼),但是該設置似乎並不重要,並且注冊表始終包含mscoree.dll,而沒有任何路徑。

我試圖通過VS向注冊表路徑添加另一個值,並且該值可以正常工作,包括具有[SystemFolder]指定的完整路徑。

我需要完整路徑的原因(如上一個問題所述)是沒有路徑,則選擇自動化服務器時Excel會生成錯誤,因為它找不到mscoree.dll(有趣的是,即使我收到錯誤,注冊也可以正常進行)。

我正在通過安裝項目進行安裝,否則安裝正常。

我正在VISTA * 64系統上安裝,但是在其他OS上卻遇到了相同的錯誤。

有人知道我在做什么錯嗎?

我沒有嘗試過,但是我猜想它與VS.NET何時將注冊表項“ [SystemFolder] mscoree.dll”放在一起有關。 它在原始帖子中工作。 可能是因為VS.NET首先運行了“ regasm / regfile”,然后使用“ [SystemFolder] mscoree.dll”覆蓋了該密鑰。

在您的情況下,它不起作用,因為VS.NET首先將您的注冊表項“ [SystemFolder] mscoree.dll”放入MSI注冊表表,然后您的值被“ regasm / regfile”輸出的值覆蓋。

為了排除VS.NET覆蓋您的值的可能性,我認為您可以標記DLL vsdrpDoNotRegister。 然后,VS.NET不會在您的注冊表表上做任何魔術。 現在,您可以獨自完成正確的外接程序注冊。 但是,正如最初所說的,VS.NET所做的只是簡單地調用“ regasm / regfile”。 你為什么不自己做。 從“ regasm / regfile your.dll”獲得.reg文件后,您唯一需要做的就是將其導入注冊表表。 右鍵單擊“目標計算機上的注冊表”,然后單擊“導入...”菜單。 而已。 沒那么難。 導入reg文件后,您應該看到以下密鑰

HKEY_CLASSES_ROOT\CLSID\{my_GUID}\InprocServer32\(default)

該值仍應設置為mscoree.dll。 現在,您可以將其更改為[SystemFolder] mscoree.dll。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM