2009-03-09 15 views
1

Verwenden von Visual Studio 2008 Ich habe das zuerst beim Versuch, ein Standard-Dialogfeld zum Speichern von Dateien in Visual Basic zu öffnen. Bisher habe ich nach erfolgloser Suche daran gearbeitet. Jetzt finde ich, dass jede Aktion, die einen Speichern/Öffnen-Dialog (zB Ctrl-O) verursachen würde, fehlschlägt. Ich habe mehr gesucht und weiß immer noch nicht, wie ich es beheben kann.ClassFactory kann angeforderte Klasse 0x80040111 nicht liefern Fehler: -2147221231

Stuff Ich weiß: Es ist kein Visual Studio Fehler, kann es offenbar in einer beliebigen Anzahl von anderen Anwendungen auftreten (weshalb die Suche ist es ärgerlich ist)

ist es entweder .NET oder COM verwandt, ich habe versucht, alles von .NET ohne Glück neu zu installieren, und ich habe nie mit COM jemals herumgespuckt, ich weiß nicht wirklich, was es ist.

Etwas fehlt, falsch platziert, oder es könnte DLL-Version Probleme sein.

Ich möchte wirklich nicht mit der Deinstallation von VS2008 oder MS Office (als ein Ergebnis, das ich gefunden habe, vorgeschlagen) oder einer anderen großen Anwendung beschäftigen.

+0

Sie haben eine fehlerhafte Shell-Erweiterung. Fangen Sie an, sie mit Hilfe von AutoRuns Dienstprogramm von SysInternals zu schlagen. –

+0

Hast du das jemals behoben? Ich habe plötzlich das gleiche Problem in VS 2008. Es passiert mir, wenn ich versuche, Bestehendes Element ... zu einem Projekt hinzuzufügen. –

Antwort

1

Also, irgendjemand, irgendwo versucht CoCreate irgendein Objekt, dass es (denkt) es muss seine Arbeit machen. Dies kann ein Visual Studio-Objekt sein oder auch nicht. Da es im Dialogfeld "Speichern/Öffnen" angezeigt wird, könnte es sich sehr gut um ein Shell-Objekt handeln.

Die wahrscheinlichste Erklärung ist der Registrierungseintrag für das Objekt wurde in irgendeiner Weise beschädigt, oder die DLL, die das Objekt exportiert, ist in gewisser Weise beschädigt. Für Letzteres könnte es komplett fehlen, oder nur in einem schlechten Zustand aus irgendeinem Grund.

Eine Sache, die Sie versuchen können, ist Regsvr32 auf wahrscheinlich Kandidat DLLs laufen, aber das ist nur im Dunkeln zu schießen. Eine weitere, erweiterte Option besteht darin, einen Debugger (wie ntsd oder windbg) an den Visual Studio-Prozess selbst anzuhängen und einen Haltepunkt auf CoCreateInstance() in der System-DLL zu setzen (stellen Sie sicher, dass Sie die genaue Signatur in finden) die Header-Datei - es kann # zu etwas anderem definiert sein. Rufen Sie dann die GUID für das übergebene Objekt als Argument für CoCreateInstance() ab. Wenn Sie dies in Ihrer Registrierung (oder in einer Freundesliste, in der dieses Problem nicht auftritt) nachschlagen, sollten Sie eine gute Vorstellung davon haben, mit welcher DLL Sie sich befassen müssen.

+0

Danke, ich werde versuchen, ich werde sehen, wie es geht –

+0

OK, also habe ich einen Windbg angeschlossen und denke CoCreateInstance ist in Ole32, aber es löst nur den Haltepunkt, wenn ich den Fokus auf VS geben ... –

+0

Nun ja, CCI wird oft aufgerufen. Du brauchst den, der versagt. Verwenden Sie das Haltepunktmakro, um die GUID auszugeben. Etwas wie: bp CoCreateInstance "dt GUID esp + 0x4; g" Sie müssen den realen Offset zu der GUID auf dem Stapel - ich benutzte 4 als ex. Dies druckt die Guid und fährt fort. –

1

Das zugrunde liegende Problem ist, dass eine CoCreateInstance fehlschlägt. Ohne einen Debugger anzuhängen und CoCreateInstance einzubinden, wird es ziemlich schwierig sein herauszufinden, was das Problem ist. Und selbst wenn Sie die Zeit dazu verwenden, ist es unwahrscheinlich, dass Sie den Fehler beheben können.

Ich stimme zu, dass eine Neuinstallation ein letzter Ausweg ist. Ein Zwischenschritt besteht darin, die Installation zu reparieren. Wenn Sie die VS-Installationsdiskette erneut einlegen, besteht eine der Optionen darin, die Installation zu "reparieren". Möglicherweise müssen Sie Programme hinzufügen/entfernen, um diese Option zu erhalten.

Eine Reparatur ist viel schneller als deinstallieren/neu installieren und wird sehr wahrscheinlich dieses spezielle Problem beheben.

EDIT

OP berichtete Reparatur erfolgreich, aber beheben nicht den Fehler. Können Sie das Ereignisprotokoll überprüfen und sehen, ob für diesen Fehler ein spezifischerer Fehler generiert wird?

+0

Die Reparatur wurde ohne Fehler abgeschlossen, das Problem wurde jedoch nicht behoben. –

+0

Nichts wird im Ereignisprotokoll angezeigt. –

1

Ich habe ähnliches Problem mit VS 2008 konfrontiert und zum Glück wurde es mit der folgenden Lösung gelöst. Versuche dies!!

Suchen Sie devenv.exe. Rechtsklick> Eigenschaften> Deaktivieren Sie Visual Designs Option

0

Deaktivieren Sie Disable Visual Themes nicht für mich arbeiten, aber im XP-Kompatibilitätsmodus ausgeführt wurde es behoben. Ich nehme an, das Problem ist eine fehlende DLL.

Verwandte Themen