使用ASP.NET查找COM DLL的文件版本

时间:2008-11-20 19:09:53

标签: asp.net com

我有一个软件诊断页面,我想在其中列出几个COM DLL的文件版本信息。该页面在普通的受限ASP.Net帐户(NETWORK SERVICE)下运行。

考虑到COM库的ProgID,获取物理文件路径或以其他方式访问文件版本的最佳方法是什么?

请注意,通过Type.GetTypeFromProgID加载它并使用类型的Assembly对象将无法正常工作,因为返回的Assembly对象是mscorlib的对象。

安装路径可由用户选择,但不保证是特定值。

1 个答案:

答案 0 :(得分:1)

解决这个问题的一种方法是使用COM函数CLSIDFromProgID(Pinvoke.Net显示如何从.Net here调用此函数)来获取CLSID,使用GUID.ToString(“B “)将CLSID转换为适当格式化的字符串,然后使用它在注册表中进行groveling以查找COM服务器的注册位置。

路径为
HKEY_CLASSES_ROOT\CLSID\<YourCLSID>\InprocServer32如果COM服务器是进程内服务器(即您期望的DLL)

请注意,注册表中的文件路径不一定是完全限定的路径。