Frage

Ich versuche, ein Windows Media Player-COM-Objekt auf meinem Rechner zu instanziiert:

Guid mediaPlayerClassId = new Guid("47ac3c2f-7033-4d47-ae81-9c94e566c4cc");
Type mediaPlayerType = Type.GetTypeFromCLSID(mediaPlayerClassId);
Activator.CreateInstance(mediaPlayerType); // <-- this line throws

Wenn die letzte Zeile ausgeführt wird, erhalte ich folgende Fehlermeldung:

System.IO.FileNotFoundException was caught
  Message="Retrieving the COM class factory for component with CLSID {47AC3C2F-7033-4D47-AE81-9C94E566C4CC} failed due to the following error: 80070002."
  Source="mscorlib"
  StackTrace:
       at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
       at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
       at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache)
       at System.Activator.CreateInstance(Type type, Boolean nonPublic)
       at System.Activator.CreateInstance(Type type)
       at MyStuff.PreviewFile(String filePath) in F:\Trunk\PreviewHandlerHosting\PreviewHandlerHost.cs:line 60
  InnerException: 

Das gleiche Code funktioniert auf anderen Entwicklern Maschinen und Endanwender-Maschinen. Aus irgendeinem Grund versagt es nur auf meinem Rechner. Was könnte die Ursache sein?

War es hilfreich?

Lösung

80070002 ist eine Datei nicht gefunden Fehler.

Meine Vermutung ist Ihre Maschine eine Abhängigkeit fehlt. Versuchen Sie, die COM-Komponente durch depends.exe laufen, um zu sehen, ob Sie alle erforderlichen Bibliotheken installiert haben.

Andere Tipps

Nun, 0x80070002 Mittel Datei nicht gefunden, also würde ich überprüfen, um zu sehen, ob die DLL zu spitz in der COM-Registrierung existiert tatsächlich auf Ihrem Computer

Wenn Anwendungspool dieser Fehler zum Absturz passieren kann. Sie können den Code überprüfen, ob es eine Funktion oder ein Objekt ist Initialisierung mehr schließlich zu wiederholen. Dies kann Speicherlecks und zuletzt Anwendungspool Absturz führen

Weitere möglicherweise hilfreiche Informationen. Wir sahen dieses Problem auf einem klassischen ASP-Web-App, die .NET-Komponenten lädt. eine App war in Ordnung, eine andere war es nicht. Gleiche Maschine? Also, was soll das? Wir waren nicht immer die richtigen Fehler um Fehler eine COM-Komponente zu laden, nur die Fehlernummer 0x80070002.

Schließlich wurde dies nur durch die Einstellung des App-Pools des gebrochenen App auf das gleiche wie die Arbeits App festgelegt. Etwas über den App-Pool bedeutete, dass die Komponente nicht richtig geladen werden kann, gleiche Identität usw. (iis 6).

Es für diese Komponente ein Haufen alter Versionsnummern in der Registrierung war, aber regasm immer das tut, es ist schrecklich bei Reinigung, wir hatten sogar ein kleines Tool zu schreiben, um sie alle zu löschen, wenn zwischen Versionsnummern weitergehen dev Maschinen. Aber in diesem Fall waren die Versionsnummern nicht das Problem.

Fazit: klingt wie ein Berechtigungsproblem, aber was weiß ich ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top