2009-03-18 13 views

Respuesta

45

Encontré esta secuencia de comandos powershell de una línea que supuestamente enumera todos los objetos COM.

gci HKLM:\Software\Classes -ea 0| ? {$_.PSChildName -match '^\w+\.\w+$' -and 
(gp "$($_.PSPath)\CLSID" -ea 0)} | ft PSChildName 

¡háganos saber si funciona!

+1

puedo confirmar que lo hace una lista de todos los objetos COM registrados. Si implementan o no la interfaz COM correctamente es un problema completamente diferente. :) – EBGreen

+3

* mis dos centavos: * 'HKLM \ Software \ Classes' corresponde en realidad a' HKCR' – ZJR

+1

Y mis dos centavos: en lugar de conectar a 'ft PSChildName', dirígete a' seleccionar -ExpandProperty PSChildName'. Eso devuelve los resultados como una matriz que se puede filtrar con ** - match ** o ** Select-String **. –

6

Utilice OleView.exe de Microsoft. Creo que puede venir con Visual Studio. Si no, puede encontrarlo en el Windows SDK. Esa es una gran descarga; puede descargar todo o puede experimentar descargando de manera fragmentaria utilizando el instalador setup.exe.

Una vez en OleView, busque en "bibliotecas tipo". Excel, por ejemplo, aparece en "Microsoft Exel".

3

Otra opción que debe ser incluido es a través de WMI:

Get-WMIObject Win32_ClassicCOMClassSetting 
+0

al ejecutar esto se produce un bucle infinito – CoderDennis

+3

Como no es un bucle, no puede ser un bucle infinito. Llevará mucho tiempo ejecutar porque hay MUCHOS componentes COM. – JasonMArcher

+0

Eso no muestra el control ActiveX que estoy buscando. Esto lo hace https://gist.github.com/810398 –

Cuestiones relacionadas