【问题标题】:Finding the File Version of a COM DLL using ASP.NET使用 ASP.NET 查找 COM DLL 的文件版本
【发布时间】:2008-11-20 19:09:53
【问题描述】:

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

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

请注意,通过 Type.GetTypeFromProgID 加载它并使用该类型的 Assembly 对象将不起作用,因为返回的 Assembly 对象是 mscorlib 的对象。

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

【问题讨论】:

    标签: asp.net com


    【解决方案1】:

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

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

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

    【讨论】:

    • 这似乎可行,谢谢!当路径可能不是完全合格的路径时,您是否立即知道?
    • 路径通常是完全限定的 - 但是,由安装程序代码将路径写入注册表。我遇到了希望将 DLL 安装在 PATH 中的目录中的 COM DLL 注册代码。当安装用户与消费用户不同时,这会导致悲痛!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2023-03-26
    • 2012-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多