2010-05-19 101 views
0

我正在使用以下腳本列出我的機器上可用的COM對象。使用Powershell列出可用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

我不知道這是否是確定64位兼容的方式,但以查看是否存在註冊表項來的方式是使用測試的路徑例如:

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 
    } 
}