2009-03-18 4 views

Répondre

45

J'ai trouvé ce script one-liner PowerShell qui liste soi-disant tous les objets COM.

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

laissez-nous savoir si cela fonctionne!

+1

Je peux confirmer qu'il fait la liste de tous les objets COM enregistrés. Qu'ils implémentent ou non correctement l'interface COM est un problème totalement différent. :) – EBGreen

+3

* mes deux cents: * 'HKLM \ Software \ Classes correspond réellement à' HKCR' – ZJR

+1

Et mes deux cents: plutôt que de canaliser à 'ft PSChildName', pipe à' select -ExpandProperty PSChildName'. Cela renvoie les résultats sous la forme d'un tableau pouvant être filtré avec ** - match ** ou ** Select-String **. –

6

Utilisez OleView.exe de Microsoft. Je pense que cela peut venir avec Visual Studio. Sinon, vous pouvez le trouver dans le Windows SDK. C'est un gros téléchargement. vous pouvez télécharger le tout ou vous pouvez essayer de le télécharger au coup par coup en utilisant le programme d'installation de setup.exe.

Une fois dans OleView, regardez sous "bibliothèques de types". Excel par exemple apparaît sous "Microsoft Exel".

3

Une autre option qui devrait être noté est par WMI:

Get-WMIObject Win32_ClassicCOMClassSetting 
+0

courir ceci a produit une boucle infinie – CoderDennis

+3

Comme ce n'est pas une boucle, il ne peut pas s'agir d'une boucle infinie. Cela prendra du temps car il y a BEAUCOUP de composants COM. – JasonMArcher

+0

Cela ne liste pas le contrôle ActiveX que je recherche. Cela fait https://gist.github.com/810398 –

Questions connexes