Office 架構移轉後的 COM 和 .NET 錯誤
徵狀
將 Microsoft Office 架構從 32 位移轉至 64 位之後,如果使用 COM 應用程式或 .NET Framework 用戶端,就會發生錯誤。 這些可能的錯誤包括但不限於下列專案:
TYPE_E_CANTLOADLIBRARY
TYPE_E_LIBNOTREGISTERED
TYPE_E_ELEMENTNOTFOUND
如果 COM 應用程式或 .NET 用戶端以 32 位進程執行,通常會發生錯誤。
範例
在 86 位 PowerShell 中執行下列程式代碼時,可能會發生這些錯誤:
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $True
原因
這些錯誤是由移轉所建立的孤立登錄子機碼所造成。
解決方案
若要修正此問題,請使用下列其中一種方法。
方法 1:自動刪除孤立的子機碼
若要偵測並移除孤立的子機碼,請從下列 GitHub 位置執行此腳本:
方法 2:手動刪除孤立的子機碼
如果步驟 1 中的 PowerShell 腳本未刪除孤立的子機碼,您也可以手動檢查孤立的專案。 受影響的裝置可能有類似下列範例的孤立子機碼:
HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\GUID\1.9\0\Win32
注意:在此範例中, GUID 是子機碼特有的字串。
子機碼的值會指向 program Files (x86) 檔案路徑中遺失的 Office 可執行檔。 例如:
C:\Program Files (x86) \Microsoft Office\Root\Office16\EXCEL.EXE
也應該有相鄰的子機碼指向正確的64位程式檔位置。