获取FileVersionInfo互操作包装的COM dll-需要完整路径

获取FileVersionInfo互操作包装的COM dll-需要完整路径,com,interop,Com,Interop,我需要提供一个关于我的.NET应用程序通过互操作调用的COM dll的“关于”样式对话框。我见过在当前加载的程序集上使用GetFileVersionInfo的解决方案,以及pInvoke风格的GetModuleHandle,然后查询调用。但因为我使用的是互操作,所以在我加载的模块列表中,我没有直接看到它,只有互操作dll 如果我使用FileVersionInfo(文件名)并拥有dll的完整路径,我会得到我所需要的——但是,由于用户可以控制他们在何处安装此COM dll,我只能考虑查询注册表以获得

我需要提供一个关于我的.NET应用程序通过互操作调用的COM dll的“关于”样式对话框。我见过在当前加载的程序集上使用GetFileVersionInfo的解决方案,以及pInvoke风格的GetModuleHandle,然后查询调用。但因为我使用的是互操作,所以在我加载的模块列表中,我没有直接看到它,只有互操作dll

如果我使用FileVersionInfo(文件名)并拥有dll的完整路径,我会得到我所需要的——但是,由于用户可以控制他们在何处安装此COM dll,我只能考虑查询注册表以获得此完整路径。有人能找到更好的解决办法吗?此产品的早期版本是本机应用程序,因此直接加载dll


有什么想法吗?查询注册表是最好的选择吗

COM并不是故意提供这些信息的。在某些情况下,它是完全不可发现的,即使您自己通过注册表根。例如,服务器可能在地球另一端的另一台机器上运行。如果您知道它是进程内服务器,那么可以使用process.Modules挖掘DLL的路径