0

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

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

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

那么使用 powershell 如何确定每个 COM 对象是否存在 InProcServer32?如果这甚至是确定它是 32 位还是 64 位的正确方法。

4

1 回答 1

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
    }
} 
于 2010-05-19T14:53:33.290 回答