我在哪里可以找到可以在 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
。这会将结果作为数组返回,可以使用 -match 或 Select-String 进行过滤。
上面的这个脚本对我不起作用,而是这个脚本起作用:powershellmagazine.com/2013/06/27/…
wben 你做Format-Text
,你不会得到string
s,而是一些格式相关的类【参考方案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 对象?的主要内容,如果未能解决你的问题,请参考以下文章
在 android sdk1.5 我在哪里可以找到我的系统中的 Sqlite Db