我在哪里可以找到可以在 Powershell 中创建的所有 COM 对象?

Posted

技术标签:

【中文标题】我在哪里可以找到可以在 Powershell 中创建的所有 COM 对象?【英文标题】:Where can I find all of the COM objects that can be created in Powershell? 【发布时间】:2010-10-14 04:53:55 【问题描述】:

在 Powershell 中,我可以创建可用于控制 Microsoft Office 应用程序的 COM 对象:

$excel = New-Object -com "Excel.Application"
$excel.visible = $true

如何列出可以在 Powershell 中创建的所有可用 COM 对象?

【问题讨论】:

【参考方案1】:

我发现这个 powershell 单行脚本应该列出所有 COM 对象。

gci HKLM:\Software\Classes -ea 0| ? $_.PSChildName -match '^\w+\.\w+$' -and
(gp "$($_.PSPath)\CLSID" -ea 0) | ft PSChildName

让我们知道它是否有效!

【讨论】:

我可以确认它确实列出了所有已注册的 COM 对象。他们是否正确实现 COM 接口是一个完全不同的问题。 :) 我的两分钱:HKLM\Software\Classes其实对应HKCR 还有我的两分钱:而不是管道到ft PSChildName,而是管道到select -ExpandProperty PSChildName。这会将结果作为数组返回,可以使用 -matchSelect-String 进行过滤。 上面的这个脚本对我不起作用,而是这个脚本起作用:powershellmagazine.com/2013/06/27/… wben 你做Format-Text,你不会得到strings,而是一些格式相关的类【参考方案2】:

使用 Microsoft 的 OleView.exe。我认为它可能随 Visual Studio 一起提供。如果没有,您可以在Windows SDK 中找到它。下载量很大;您可以下载整个内容,也可以尝试使用 setup.exe 安装程序分段下载。

在 OleView 中,查看“类型库”。例如 Excel 出现在“Microsoft Exel”下。

【讨论】:

【参考方案3】:

另一个需要注意的选项是通过 WMI:

Get-WMIObject Win32_ClassicCOMClassSetting

【讨论】:

运行这个会产生一个无限循环 既然不是循环,就不可能是无限循环。运行时间会很长,因为有很多 COM 组件。 这没有列出我正在寻找的 ActiveX 控件。这是gist.github.com/810398 ActiveX 控件并不总是有一个 progid,或者更准确地说,一个程序标识符(这是上面的脚本在 HKCR 中发现的。但它们总是有一个 CLSID。如果你只是想确定是否安装了 ActiveX 控件以便您可以卸载它,在 HKCR/CLSID 中搜索其 CLSID。

以上是关于我在哪里可以找到可以在 Powershell 中创建的所有 COM 对象?的主要内容,如果未能解决你的问题,请参考以下文章

我在哪里可以找到DLNA的完整规格?

在哪里可以找到 MySQL InnoDB 集群名称

在 android sdk1.5 我在哪里可以找到我的系统中的 Sqlite Db

在哪里可以找到系统映像以在 Android Studio 中创建虚拟设备

我在哪里指定要测试我的负载测试项目的 URL

我在哪里可以找到这个 LinkedIn 插件?