无法在C#中实例化COM组件 - 错误80070002

Jud*_*ngo 4 c# com interop com-interop

我正在尝试在我的机器上实例化Windows Media Player COM对象:

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

执行最后一行时,我收到以下错误:

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: 
Run Code Online (Sandbox Code Playgroud)

此相同代码适用于其他开发人员计算机和最终用户计算机.出于某种原因,它只能在我的机器上失败.可能是什么原因?

Ree*_*sey 6

80070002是File Not Found错误.

我的猜测是你的机器缺少一个依赖.尝试通过depends.exe运行com组件,以查看是否已安装所有必需的库.