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.