Wie repariert man COMException Fehler 80040154?
Bewegen einen funktionierenden C# - Projekt von einer 64-bit-windows-7-Rechner einen 32-bit-XP-Maschine verursacht den folgenden Fehler:
Abrufen des COM-Klassenfactory für die Komponente mit CLSID
{681EF637-F129-4AE9-94BB-618937E3F6B6} konnte aufgrund des folgenden
error: 80040154.
681EF637-F129-4AE9-94BB-618937E3F6B6 ist nicht in der Registrierung, so dass es nicht ordnungsgemäß installiert ist, aber dies ist dieselbe ID, die vorher ein problem auf der 64-bit-windows-7-Maschine. Die Lösung zu diesem Fehler auf die 64-bit-windows-7-Computer gefunden wurde hier (change Plattform Ziel auf x 86) aber das löst das problem nicht, auf dem 32-bit XP-Rechner. Wie finde ich die dll verbunden mit 681EF637-F129-4AE9-94BB-618937E3F6B6, oder, noch besser, wie repariere ich diese Ausnahme?
InformationsquelleAutor der Frage jacknad | 2011-08-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie die DLL, gehen Sie zu Ihrem 64-bit-Maschine, und öffnen Sie die registry. Finden Sie den Schlüssel namens
HKEY_CLASSES_ROOT\CLSID\{681EF637-F129-4AE9-94BB-618937E3F6B6}\InprocServer32
. Dieser Schlüssel wird der Dateiname der DLL als default-Wert.Wenn Sie das problem auf Ihrem 64-bit-Maschine, durch erneutes kompilieren Sie Ihr Projekt für x86 -, dann werden Sie brauchen, um sich in der 32-bit Teil der registry statt in den normalen Platz. Dies ist
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{681EF637-F129-4AE9-94BB-618937E3F6B6}\InprocServer32
.Wenn die DLL gebaut für 32 bit, dann Sie können Sie direkt auf Ihrem 32-bit-Maschine. Wenn es gebaut ist für 64 bit, dann musst du an den Hersteller und erhalten Sie einen 32-bit-version von Ihnen.
Wenn Sie die DLL registrieren, indem Sie c:\windows\system32\regsvr32.exe.
InformationsquelleAutor der Antwort Ciaran Keating
Ich hatte das gleiche Problem in einem Windows-Dienst. Alle Tasten, wo an der richtigen Stelle in der registry. Der build des service für x86 und ich habe immer noch die Ausnahme. Ich fand heraus, über CorFlags.exe
Führen Sie diese auf Ihrem
service.exe
ohne flags zu überprüfen, ob Sie laufen unter 32 bit. Wenn nicht laufen Sie mit der fahne/32BIT+ /Force
(Die Kraft nur für signierte Assemblys)
Wenn Sie die Benutzerkontensteuerung aktiviert, können Sie die folgende Fehlermeldung erhalten:
corflags : error CF001 : Could not open file for writing
Geben dem Benutzer die volle Kontrolle über die Versammlungen.InformationsquelleAutor der Antwort Preben Huybrechts
PROBLEMUMGEHUNG:
Mögliche Problemumgehung ändern Sie Ihre Projekt-Plattform von "Any CPU" zu " X86 " (in den Projekteigenschaften, Build/Platform Target)
ROOTCAUSE
Den VSS-Interop ist eine verwaltete assembly mit 32-bit-Framework und die dll enthält eine 32-bit-COM-Objekt. Wenn Sie diese COM-dll in 64-bit-Umgebung, erhalten Sie die Fehlermeldung.
InformationsquelleAutor der Antwort kalidoss
Verschieben excel-Variablen global deklarieren, die in Ihrer form an lokale wie in meiner form habe ich:
oben genannten zwei Zeilen waren deklarieren, die global in mein Formular so zog ich diese zwei Zeilen zu lokalen Funktions-und jetzt-tool funktioniert gut.
InformationsquelleAutor der Antwort Yogesh