.net 如何知道某个PIA调用了哪个COM组件?

.net 如何知道某个PIA调用了哪个COM组件?,.net,com,interop,.net,Com,Interop,我的盒子上安装了一个PIA,它是Microsoft.mshtml。如果我理解正确的话,这些PIA是由微软提供的,以简化我们的COM互操作。但是我想知道这个PIA实际包装/调用了哪个COM组件。因为我有一个UnauthorizedAccessException,我想找到实际的COM组件并使用dcomcnfg.exe授予它适当的权限。我希望这是正确的方向 谢谢 它是c:\windows\system32\mshtml.dll。我严重怀疑dcomcnfg.exe能否解决您的问题,这是一个进程内COM服

我的盒子上安装了一个PIA,它是Microsoft.mshtml。如果我理解正确的话,这些PIA是由微软提供的,以简化我们的COM互操作。但是我想知道这个PIA实际包装/调用了哪个COM组件。因为我有一个UnauthorizedAccessException,我想找到实际的COM组件并使用dcomcnfg.exe授予它适当的权限。我希望这是正确的方向


谢谢

它是c:\windows\system32\mshtml.dll。我严重怀疑dcomcnfg.exe能否解决您的问题,这是一个进程内COM服务器。通过使用Sysinternals的ProcMon实用程序,您可以更深入地了解到底是哪个注册表或文件访问生成了异常。查找错误代码5


只有当您在自己的公共类中公开来自该COM服务器的类型时,才需要PIA。没那么普遍。在VS2010中,PIA具有极好的“嵌入互操作类型”选项,已经成为历史。昵称为“无pia”选项。使用Project+添加引用、浏览选项卡,选择c:\windows\system32\mshtml.tlb,可以避免PIA。早期版本的Windows中的.dll。

我将IE7升级到IE8。阿联酋走了。现在一切都好了。但我仍然不确定这其中的根本原因。我想知道不同版本的IEs是否有不同版本的mshtml。但是我没有找到mshtml的官方下载站点。是的,当你升级IE时,你也会升级mshtml.dll。它包含在IE安装中,因此没有单独的下载。今天,我遇到了mshtml的另一个问题。。它给了我一个错误…哦,上帝。。。。