【问题标题】:How do I get a list of all COM automation servers?如何获取所有 COM 自动化服务器的列表?
【发布时间】:2012-03-31 00:10:03
【问题描述】:

我正在尝试从 Silverlight 调用作为 COM 公开的各种 API,这只有在它们是已注册自动化服务器的一部分并具有相应的 progid 时才有可能。例如,Word 将是“Word.Application”。如何获取所有已注册服务器及其各自 progid 的列表?

我找到了组件服务管理单元,但在其中找不到我所知道的 progid。编辑:管理单元看起来应该在那里,我找到了一个显示某些 COM+ 和 DCOM 应用程序的应用程序 ID 的属性窗口,但我找不到明显的服务器,例如 Word。 COM+ 树只包含六个条目。

【问题讨论】:

  • 这不是它的工作原理。您需要先知道 progid 或 CLSID,然后 COM 才能从注册表中找到实现它的可执行文件。反过来做是希望您知道如何正确使用服务器,即使您不知道它的作用。这行不通。
  • @passant 我认为您误解了我想知道的内容,但您仍然帮助了我。您所说的意味着注册表中有一个目录。所以我应该能够从注册表中获取列表,我只需要知道确切的位置。你知道更多吗?
  • @passant 啊,我想我找到了。它是注册表中的整个 HKEY_CLASSES_ROOT 文件夹。这就是我想知道的。

标签: com automation progid


【解决方案1】:

自动化服务器列表似乎位于注册表中的 HKEY_CLASSES_ROOT 下。在 Silverlight 中,键的名称是 progid,CLDID 是称为 CLSID 的子键的值。

在 Hans Passant 对我提到注册表的问题发表评论后,我发现了这一点。

【讨论】:

    【解决方案2】:

    PrimalScript,由 Sapien Technologies Inc. 开发,拥有一个对象浏览器,可以出色地列出系统上所有可用的 COM 对象/接口。

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 2016-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多