使用Powershell列出可用的COM对象

时间:2010-05-19 09:36:54

标签: powershell com-object

我目前正在使用以下脚本列出我机器上的可用COM对象。

$path = "REGISTRY::HKEY_CLASSES_ROOT\CLSID\*\PROGID"
foreach ($obj in dir $path) {
    write-host $obj.GetValue("")
}

我在另一个网站上读到,InProcServer32密钥的存在证明该对象是64位兼容的。

所以使用powershell如何为每个COM对象确定InProcServer32的存在?如果这是确定它是32位还是64位的正确方法。

1 个答案:

答案 0 :(得分:1)

我不知道这是否是确定64位兼容性的方法,但是查看是否存在regkey的方法是使用Test-Path,例如:

PS> Test-Path HKLM:\SOFTWARE
True
PS> Test-Path HKLM:\SOFTWARE2
False

在你的情况下:

$path = "REGISTRY::HKEY_CLASSES_ROOT\CLSID\*\PROGID" 
foreach ($obj in dir $path) { 
    write-host $obj.GetValue("") 
    if (Test-Path (Join-Path $obj.PSParentPath 'InprocServer32'))
    {
        # key exists
    }
}