代码之家  ›  专栏  ›  技术社区  ›  technophile

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

  •  0
  • technophile  · 技术社区  · 16 年前

    我有一个软件诊断页面,上面列出了几个COM DLL的文件版本信息。该页正在正常、受限的ASP.NET帐户(网络服务)下运行。

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

    请注意,通过type.gettypefromProgID和使用类型的assembly对象加载它是不起作用的,因为返回的assembly对象是mscorlib对象。

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Dan Blanchard    16 年前

    实现这一点的一种方法是使用COM函数 CLSIDFromProgID (pinvoke.net显示了如何从.net调用它 here )要获取clsid,请使用guid.toString(“b”)将clsid转换为适当格式的字符串,然后使用该字符串在注册表中查找COM服务器的注册位置。

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

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