Shell-Fehler “Schnittstelle nicht unterstützt”

In letzter Zeit fallen mir Hilferufe von Anwendern auf, bei denen die Windows-Shell Ärger macht. Beim Versuch, eine Funktion auszuführen, kommt die Fehlermeldung "Schnittstelle nicht unterstützt". Sucht man im Internet einmal nach dem Begriff "Schnittstelle nicht unterstützt", gibt es sehr viele Treffer [3], aber zu unterschiedlichen Programmen und Funktionen. Der Beitrag skizziert, was dahinter steckt und wie man das Problem ggf. lösen kann.


Anzeige

Was bedeutet die Fehlermeldung?

Der tiefere Hintergrund für die Fehlermeldung hängt damit zusammen, wie bestimmte Funktionen in Programmen oder in Windows implementiert sind. Windows  stellt viele Funktionen über eine COM-Schnittstelle global zur Verfügung. Programme können dann auf diese Funktionen (die in der objektorientierten Programmierung als Methoden bezeichnet und durch Objektinstanzen bereitgestellt werden) zugreifen.

Um aber eine Methode über die COM-Schnittstelle verwenden zu können, muss das Programm nachfragen, ob die Methode die gewünschten Schnittstellen (diese beschreiben den Namen der Methode, die Übergabeparameter, deren Reihenfolge, die Datentypen der Parameter etc.) bereitstellt. Wird eine solche Anfrage gestartet und findet Windows bei der Abfrage der COM-Schnittstellen (oder in den Assemblys von .NET-Anwendungen) keine entsprechende Schnittstellenbeschreibung, löst dies eine entsprechende Fehlermeldung aus.

Eine Ursache für eine nicht unterstützte Schnittstelle können überschriebene bzw. beschädigte Bibliotheksdateien sein (.dll-Dateien wurden durch andere, ältere, Versionen ersetzt). Wenn aber nichts neu installiert wurde und der Fehler plötzlich auftritt, spricht vieles dafür, dass die Registrierung der COM-Objekte beschädigt ist. Dann lässt sich der betreffende COM-Server nicht mehr ansprechen.


Anzeige

Integritätsprüfung auf beschädigte Systemdateien durchführen

Der erste Ansatz bei einem solchen Fehler sollte eine Integritätsprüfung auf beschädigte Systemdateien sein.

  1. Geben Sie cmd im Suchfeld des Startmenüs ein und drücken Sie Strg+Shift+Enter.
  2. Bestätigen Sie die Sicherheitsabfrage der Benutzerkontensteuerung und warten Sie, bis die administrative Eingabeaufforderung erscheint.
  3. Geben Sie im Fenster der Eingabeaufforderung den folgenden Befehl ein:sfc /scannow

Die Prüfung durch den Ressourcenschutz dauert einige Zeit. Im Idealfall findet sfc beschädigte Dateien und kann diese auch reparieren. Wenn das System nach einem Neustart wieder funktioniert, haben Sie gewonnen.

Werden beschädigte, aber nicht reparierbare, Dateien gefunden? Das Programm sfc erstellt eine Protokolldatei CBS.log und gibt einen entsprechenden Hinweis, wo die Datei zu finden ist. Bei einer oder zwei Dateien lassen sich diese ggf. mit Programmen wie 7-ZIP aus den WIM-Dateien der Windows 7 Setup-DVD extrahieren und mittels eines gebooteten Windows PE in die Windows-Ordner schieben. Andernfalls wäre die weiter unten skizzierte Reparaturinstallation angesagt.

Findet sfc dagegen keine beschädigten Ressourcen, kann die Ursache auch in beschädigten Registrierungseinträgen zu finden sein. Dann sollten Sie die folgenden Abschnitte durcharbeiten.

Wenn die Schnittstelle in Office nicht registriert ist

Benutzer älterer Versionen von Outlook oder anderer Office-Anwendungen werden gelegentlich mit der Fehlermeldung "Schnittstelle nicht registriert" konfrontiert. In diesem Fall kann die Registrierung der Datei Ole32.dll beschädigt sein. Diese Bibliothek stellt viele zentrale Methoden zur Automatisierung bereit.

  1. Abhilfe schafft, cmd im Suchfeld des Startmenüs einzutippen, die Tastenkombination Strg+Shift+Enter zu drücken und die Abfrage der Benutzerkontensteuerung zu bestätigen.
  2. Anschließend ist im Fenster der Eingabeaufforderung der folgende Befehl einzugeben.Regsvr32.exe %Windir%\System32\Ole32.dll
  3. Bestätigen Sie das Dialogfeld, das den Erfolg der Aktion anzeigt, über die OK-Schaltfläche.

Danach sollte ein Neustart von Windows 7 durchgeführt und dann das System getestet werden. Microsoft hat zu diesem Problem einen eigenen Artikel [4] in der Knowledge-Base veröffentlicht. Der obige Ansatz sollte daher auf jeden Fall bei Auftreten des Fehlers getestet werden. Hilft dies nicht, führen Sie die nachfolgenden Reparaturanweisungen aus.

Abhilfe schaffen, so kann es gehen

Solange die .dll-Dateien noch intakt und in der benötigten Form unter Windows vorliegen, kann man als Administrator versuchen, die Registrierung der Bibliotheksdateien mit den COM-Objekten erneut durchzuführen. Die Bibliotheksdateien liegen meist als .dll-Dateien im Windows-Ordner, in system32, im Programmordner (und ggf. in anderen Unterordnern) vor. Problem ist, dass meist nicht bekannt ist, welche DLL da Ärger bereitet.

Unter [1] findet sich eine ganz spannende Diskussion zu diesem Thema. Ein Ansatz besteht darin, sich über den dir-Befehl alle DLL-Dateien auflisten zu lassen. Die Liste wird dann in eine Datei umgeleitet und in aufbereiteter Form als .bat-Datei gespeichert. Der Benutzer goolem schlägt vor, den folgenden Befehl:

FOR /R C:\ %G IN (*.dll) DO "%systemroot%\system32\regsvr32.exe" /s "%G"

(der Befehl muss in einer Zeile stehen) in eine .bat-Datei zu speichern. Die .bat-Datei kann mit dem Windows-Editor erstellt werden. Dies halte ich für eine recht elegante Lösung, die man auf jeden Fall versuchen kann.

Die FOR-Anweisung sorgt dafür, dass die im Ausdruck "IN (*.dll)" gefundenen (d. h. zum Filter passenden) DLL-Dateien durch Wiederholen abgearbeitet werden. Bei jedem Durchlauf wird der Dateiname in der Schleifenvariablen %G gespeichert. Der Schalter /R bewirkt das rekursive Durchlaufen aller Verzeichnisse, ausgehend vom Stammverzeichnis (hier das Systemlaufwerk C:\).

Der Befehlsteil hinter DO wird dann mit jedem gefundenen Treffer ausgeführt. Konkret wird regsvr32.exe aufgerufen und die in %G enthaltene DLL-Datei neu registriert. Der Schalter /s bewirkt eine "silent" Registrierung der Komponente ohne weitere Meldungen.

Der Administrator kann dann die Batchdatei (z. B. COMRepair.bat) per Rechtsklick anwählen und über den Kontextmenübefehl Als Administrator ausführen starten. Nach bestätigen der Sicherheitsabfrage der Benutzerkontensteuerung sollte die Neuregistrierung durchlaufen. Mit etwas Glück werden dann alle fehlerhaften COM-Komponenten registriert und nach einem Neustart sollte der Fehler "Schnittstelle nicht unterstützt" weg sein.

Andernfalls liegt ein DLL-Versionskonflikt vor, oder die Reparatur hat nicht auf die vorgesehene Weise funktioniert. Bei letzterem wäre noch eine Reparaturinstallation durch Inplace Upgrade [2] ins Auge zu fassen.

Für mich bleibt nun die abschließende Frage, welche Anwendungen diesen Fehler verursachen. Da dies bei mir noch nie aufgetreten ist, kann ich nur raten. Aus diversen Fundstellen drängt sich der Verdacht auf, dass Virenscanner und Internet Security-Lösungen beteiligt sein können.

Links:
1: Diskussion zur Neuregistrierung von COM-Objekten
2: Windows 7-Reparatur durch Inplace-Upgrade (Dr. Windows)
3: Google-Treffer zum Problem
4: MS-Knowledge-Base-Artikel zu Outlook
5: MS-Forendiskussion zum Schnittstellenproblem


Anzeige

Dieser Beitrag wurde unter Installation, Problemlösung abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

6 Antworten zu Shell-Fehler “Schnittstelle nicht unterstützt”

  1. Benutzer sagt:

    Bei mir ist der Fehler aufgetreten, als ich einem Benutzer (Standart) neue Rechte zugewiesen habe. Mit einem mal hatte jeder Benutzer, außer dem Haupt-Administrator, diesen Fehler.

    So gesehen ist es bei mir Eigenverschulden gewesen, weil ich nunmal an den Rechten der Benutzer "rumgespielt" habe. Allerdings ist mir das entstehen des Fehlers schleierhaft, da ich nichts ungewöhnliches ausprobierte.

    Danke soweit für die Lösungsansätze, aber meine Probleme bestehen weiterhin …

  2. Günter Born sagt:

    @Benutzer: Lässt sich da noch genauer beschreiben, was Du an Rechten geändert hast? Irgendwelche Dateiberechtigungen geändert oder was? Vielleicht bringt mich das auf die richtige Spur?

  3. no name sagt:

    bei mir kann ich nicht mal inder suchzeile was eingeben was soll ich machen

  4. NPeters sagt:

    In einer bat-Datei muss man aus den %-Zeichen zwei %-Zeichen direkt hintereinander machen, sonst funktioniert es nicht.
    Im ganzen finde ich das auch nicht so eine gute Idee, da mit der Schleife alle dlls die unter C:\ zu finden sind registriert werden. Eleganter ist wenn man in einem Kommandofenster in das Verzeichnis C:\Windows\System32 wechselt und dann das hier ausführt: FOR /f %s IN ('dir /b *.dll') DO regsvr32 /s %s

  5. Jörg sagt:

    Herr Born ist der Erste (und wahrscheinlich Einzige), der das Schnittstellenproblem gut und einfach erklären konnte: Die Umsetzung ist einfach und hat sofort funktioniert.

    Stunden "surfen" und seine Lebenszeit an selbsternannte Experten mit gefährlichem Halbwissen bei völliger Inkompetenz zu verschwenden kann man sich sparen!
    Ein großes Danke!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Bitte beachtet die Regeln zum Kommentieren im Blog (Erstkommentare und Verlinktes landet in der Moderation, gebe ich alle paar Stunden frei, SEO-Posts/SPAM lösche ich rigoros). Kommentare abseits des Themas bitte unter Diskussion.

Du findest den Blog gut, hast aber Werbung geblockt? Du kannst diesen Blog auch durch eine Spende unterstützen.