Просмотр доступных COM-объектов с помощью Powershell - PullRequest
0 голосов
/ 19 мая 2010

В настоящее время я использую следующий скрипт для отображения списка доступных COM-объектов на моем компьютере.

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

Я читал на другом веб-сайте, что наличие ключа InProcServer32 свидетельствует о совместимости 64-битного объекта.

Итак, используя powershell, как я могу определить наличие InProcServer32 для каждого COM-объекта? Если это даже правильный способ установить, является ли он 32-битным или 64-битным.

1 Ответ

1 голос
/ 19 мая 2010

Я не знаю, является ли это способом определения 64-битной совместимости, но способ проверить, существует ли отскок, заключается в использовании Test-Path, например ::100100

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