Udostępnij za pośrednictwem


Błędy COM i .NET po migracji architektury pakietu Office

Symptomy

Po przeprowadzeniu migracji architektury pakietu Microsoft Office z wersji 32-bitowej do 64-bitowej wystąpią błędy, jeśli jest używana aplikacja COM lub klient .NET Framework. Te możliwe błędy obejmują, ale nie są ograniczone do następujących:

  • TYPE_E_CANTLOADLIBRARY

  • TYPE_E_LIBNOTREGISTERED

  • TYPE_E_ELEMENTNOTFOUND

Błędy zwykle występują, jeśli aplikacja COM lub klient platformy .NET jest uruchomiony jako proces 32-bitowy.

Przykład

Te błędy mogą wystąpić, gdy w 86-bitowym programie PowerShell zostanie uruchomiony następujący kod:

$xl = New-Object -ComObject Excel.Application

$xl.Visible = $True

Przyczyna

Błędy są spowodowane przez oddzielone podklucze rejestru, które są tworzone przez migrację.

Rozwiązanie

Aby rozwiązać ten problem, użyj jednej z następujących metod.

Metoda 1. Automatyczne usuwanie oddzielonych podkluczów

Aby wykryć i usunąć oddzielone podklucze, uruchom ten skrypt z następującej lokalizacji usługi GitHub:

Korygowanie typu pakietu Office

Metoda 2. Ręczne usuwanie oddzielonych podkluczów

Jeśli skrypt programu PowerShell z kroku 1 nie usunie oddzielonych podkluczów, możesz również ręcznie sprawdzić, czy nie ma oddzielonych wpisów. Urządzenie, którego dotyczy problem, może mieć oddzielone podklucze podobne do następującego przykładu:

HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\GUID\1.9\0\Win32

Uwaga: W tym przykładzie GUID jest ciągiem specyficznym dla podklucza.

Podklucz będzie miał wartość wskazującą brak pliku wykonywalnego pakietu Office w ścieżce pliku Program Files (x86). Przykład:

C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE

Powinien istnieć również sąsiedni podklucz wskazujący poprawną 64-bitową lokalizację plików programu.