C#でCOMコンポーネントをインスタンス化できません-エラー80070002

StackOverflow https://stackoverflow.com/questions/1008040

  •  06-07-2019
  •  | 
  •  

質問

自分のマシンでWindows Media Player COMオブジェクトをインスタンス化しようとしています:

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

その最後の行を実行すると、次のエラーが表示されます。

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: 

これと同じコードは、他の開発者のマシンとエンドユーザーのマシンで機能します。何らかの理由で、私のマシンでのみ失敗します。原因は何ですか?

役に立ちましたか?

解決

80070002はFile Not Foundエラーです。

あなたのマシンには依存関係がありません。 depend.exeを介してcomコンポーネントを実行して、必要なライブラリがすべてインストールされているかどうかを確認してください。

他のヒント

まあ、0x80070002はFile not foundを意味するので、COM登録で指定されたDLLが実際にマシン上に存在するかどうかを確認します

アプリケーションプールがクラッシュすると、このエラーが発生する可能性があります。最終的に繰り返される関数またはオブジェクトの初期化がある場合は、コードを確認できます。これにより、メモリリークが発生し、最後にアプリケーションプールがクラッシュする可能性があります

さらに役立つ情報。この問題は、.netコンポーネントをロードする従来のASP Webアプリで見られました。あるアプリは問題なく、別のアプリは問題ありませんでした。同じ機械?それで何が得られますか?エラー番号0x80070002だけで、comコンポーネントの読み込みに失敗したことに関する適切なエラーは発生していませんでした。

最終的には、壊れたアプリのアプリプールを動作中のアプリと同じに設定することで修正されました。アプリプールに関する何かが原因で、コンポーネントを適切にロードできなかった、同じIDなど(iis 6)。

そのコンポーネントのレジストリには多くの古いバージョン番号がありましたが、regasmは常にそれを行います。クリーンアップはひどいです。開発マシン。しかし、この場合、それらのバージョン番号は問題ではありませんでした。

結論:パーミッションの問題のように聞こえますが、私は何を知っていますか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top