2009-03-18 8 views

risposta

45

Ho trovato questo script one-liner PowerShell che presumibilmente elenca tutti gli oggetti COM.

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

fateci sapere se funziona!

+1

posso confermare che lo fa elencare tutti gli oggetti COM registrati. Indipendentemente dal fatto che implementino correttamente l'interfaccia COM è un problema completamente diverso. :) – EBGreen

+3

* i miei due centesimi: * 'HKLM \ Software \ Classes' corrisponde normalmente a' HKCR' – ZJR

+1

E i miei due centesimi: piuttosto che eseguire il piping su 'ft PSChildName', pipe a' select -ExpandProperty PSChildName'. Ciò restituisce i risultati come una matrice che può essere filtrata con ** - match ** o ** Select-String **. –

6

Utilizzare OleView.exe di Microsoft. Penso che possa venire con Visual Studio. In caso contrario, è possibile trovarlo nello Windows SDK. Questo è un grande download; puoi scaricare il tutto o provare a scaricarlo in modo frammentario usando il programma di installazione setup.exe.

Una volta in OleView, cercare in "librerie di caratteri". Excel per esempio appare sotto "Microsoft Exel".

3

Un'altra opzione che dovrebbe essere notato è tramite WMI:

Get-WMIObject Win32_ClassicCOMClassSetting 
+0

l'esecuzione di questo ha prodotto un ciclo infinito – CoderDennis

+3

Poiché non è un ciclo, non può essere un ciclo infinito. Ci vorrà molto tempo per l'esecuzione perché ci sono MOLTE componenti COM. – JasonMArcher

+0

Questo non elenca il controllo ActiveX che sto cercando. Questo fa https://gist.github.com/810398 –