$objWMIService = ObjGet('winmgmts:\\localhost\root\CIMV2')
$colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_ClassicCOMClassSetting', 'WQL', 48)
If Not IsObj($colItems) Then
MsgBox(4096, "Warning", "Warning: Not an object.")
EndIf
$sFields = "AppID|AutoConvertToClsid|AutoTreatAsClsid|Caption|ComponentId|Control|DefaultIcon|Description|InprocHandler|InprocHandler32|InprocServer|InprocServer32|Insertable|JavaClass|"
$sFields &= "LocalServer|LocalServer32|LongDisplayName|ProgID|SettingID|ShortDisplayName|ThreadingModel|ToolBoxBitmap32|TreatAsClsid|TypeLibraryId|Version|VersionIndependentProgId"
$aFields = StringSplit($sFields, "|")
$hFile = FileOpen(@ScriptDir & "\log_COM-objects.xls", 2)
FileWriteLine($hFile, StringReplace($sFields, "|", @TAB))
For $objItem In $colItems
$sRes = ""
For $iColumn = 1 To $aFields[0]
$sRes &= Execute("$objItem." & $aFields[$iColumn])
If $iColumn < $aFields[0] Then
$sRes &= @TAB
EndIf
Next
FileWriteLine($hFile, $sRes)
Next
FileClose($hFile)
MsgBox(4096, "", "Script terminated.")