COM- en .NET-fouten na migratie van Office-architectuur
Symptomen
Nadat u de Microsoft Office-architectuur hebt gemigreerd van 32-bits naar 64-bits, ondervindt u fouten als een COM-toepassing of een .NET Framework-client wordt gebruikt. Deze mogelijke fouten omvatten, maar zijn niet beperkt tot, het volgende:
TYPE_E_CANTLOADLIBRARY
TYPE_E_LIBNOTREGISTERED
TYPE_E_ELEMENTNOTFOUND
De fouten treden meestal op als de COM-toepassing of .NET-client wordt uitgevoerd als een 32-bits proces.
Voorbeeld
Deze fouten kunnen optreden wanneer de volgende code wordt uitgevoerd in 86-bits PowerShell:
$xl = New-Object -ComObject Excel.Application
$xl.Visible = $True
Oorzaak
De fouten worden veroorzaakt door zwevende registersubsleutels die door de migratie worden gemaakt.
Oplossing
Gebruik een van de volgende methoden om dit probleem op te lossen.
Methode 1: Zwevende subsleutels automatisch verwijderen
Als u de zwevende subsleutels wilt detecteren en verwijderen, voert u dit script uit vanaf de volgende GitHub-locatie:
Methode 2: Zwevende subsleutels handmatig verwijderen
Als het PowerShell-script uit stap 1 de zwevende subsleutels niet verwijdert, kunt u ook handmatig controleren op zwevende vermeldingen. Het betrokken apparaat heeft mogelijk zwevende subsleutels die lijken op het volgende voorbeeld:
HKEY_CLASSES_ROOT\WOW6432Node\TypeLib\GUID\1.9\0\Win32
Opmerking: in dit voorbeeld GUID is een tekenreeks die specifiek is voor de subsleutel.
De subsleutel heeft een waarde die verwijst naar een ontbrekend office-uitvoerbaar bestand in het bestandspad Program Files (x86). Bijvoorbeeld:
C:\Program Files (x86)\Microsoft Office\Root\Office16\EXCEL.EXE
Er moet ook een aangrenzende subsleutel zijn die verwijst naar de juiste locatie van 64-bits programmabestanden.