1 (изменено: Аскет, 2012-01-01 13:55:38)

Тема: COM/ActiveX: COM-Informer

Приветствую, коллеги.

Поздравляю всех с наступающим Новым Годом, 2012-м - эпичным во всех отношениях, который ко всему прочему обещает быть продуктивным в плане творчества и созидания. И надеюсь что данный топик даст толчок к тому самому продуктивному творчеству!

Как вы наверно знаете, я являюсь давним поклонником технологии COM.
Хочу продемонстрировать инструмент, призванный помочь при работе с библиотеками/ProgID'ами/CLSID'ами, вобщем с COM.

http://true-script.narod.ru/devSOFT/COM-Informer.PNG
COM-informer. Детальное описание.
Скачать COM-Informer v.1.1 (227kb)

COM-Informer предназначен для получения ключевой информации обо всех классах, экспортируемых COM-сервером:
- Имя
- ProgID
- CLSID
- Путь и имя файла COM-сервера

Помню, были на форуме вопросы из разряда «как получить список идентификаторов ProgID?». В ответе обычно направляют к ObjectBrowser'у.
Но:
а) Ни всякий браузер объектов выдаёт такую информацию
б) Браузер объектов отображает только некоторую часть объектов и интерфейсов, упрямо не замечая остальные. И даже браузер объектов такого монстра как VB6, тоже, страдает этим недугом. А ведь всё очень просто. Но об этом как-нибудь в другой раз [а возможно, и неспроста ларец запрятан ].
в) Что если com-сервер вообще не имеет библиотеки типов (tlb)? Браузер начинает ругаться и отбрехиваться, мол ничего и знать не хочет о таких com-серверах.

А сейчас давайте проведём небольшой эксперимент.

В качестве подопытного возьмём catsrvut.dll (COMEXPLib, «COM Services») из windows\system32.
Берём любой браузер объектов (например, PBROW из пакета PowerBasic - он отображает progid'ы) и натравим его на подопытную библиотеку catsrvut.dll.
ClientExp.ComClientExport.1 - всего один класс, не густо. Что-то связанное с дебрями COM+ подумаете Вы и откините библиотеку в чёрный ящик ненужных вещей.

Но давайте обработаем туже библиотеку в COM-informer'е:
1) в текстовое поле слева вбиваем catsrvut.dll
2) жмём на Get info by Lib.
или заносим полученное "ClientExp.ComClientExport.1" в поле «ProgID or CLSID» и давим на Get info by ProgID.

Получаем аж (!)32 интереснейших класса, 13 из которых юзабельны на 100% и имеют свои ProgID'ы!
Ничего так глаза раскрывает, не правда-ли?

И кстати, раз уж заговорил о полезных и интересных классах из либы - класс MakeCab (откликается на "MakeCab.MakeCab"), жмёт файл в CAB-архив посильнее WinRAR'a (при обычном методе сжатия).
GenerateMSI Class - явно что-то очень интересное и связанное с генерацией инсталяшек.

И таких классов в штатной поставке системы очень много, сродни WMI - тысячи их, или даже больше - порядка 5 тысяч (говорю о XP SP2).

2

Re: COM/ActiveX: COM-Informer

McAfee распознает COMInformer.exe, в архиве как вирус W32/Induc.

( 2 * b ) || ! ( 2 * b )

3

Re: COM/ActiveX: COM-Informer

MSSE — аналогично. Induc.A
Видимо, придётся теперь любые файлы, прежде чем выкладывать, проверять на virustotal'e.

4

Re: COM/ActiveX: COM-Informer

Однако...:/
А я думаю "с чего это народ.ру на upx ругается?".
Где-то подцепил...

Впрочем тварь без особого деструктива и легко лечится.
Прекомпилил с чистым модулем, теперь файл чист

5

Re: COM/ActiveX: COM-Informer

«TypeLib Browser» отсюда: WSH: браузеры объектов автоматизации (OLE/COM/Automation) показывает всё содержимое библиотеки «catsrvut.dll». Думаю, можно сразу первый пост в ту же тему. Желательно также, кроме ссылки на страницу, добавить прямую ссылку на загрузку.

Аскет пишет:

И кстати, раз уж заговорил о полезных и интересных классах из либы - класс MakeCab (откликается на "MakeCab.MakeCab"), жмёт файл в CAB-архив посильнее WinRAR'a (при обычном методе сжатия).

Серый форум / VBScript: работа с CAB архивами. Но мне всё равно не нравится — возможностей катастрофически мало, скорость работы на порядок ниже нежели у WinRar'а, «жмёт … посильнее … (при обычном методе сжатия)» тоже не подтверждаю.

6

Re: COM/ActiveX: COM-Informer

alexii пишет:

...тоже не подтверждаю.

А разве WinRAR может создавать CAB'ы? И потом, MakeCab действительно довольно мощный класс в плане компрессии, ведь насколько мне не изменяет память, то в CAB'ах поддерживается три различных алгоритма сжатия: LZX, Deflate и... толи квантум, то ли еще как-то иначе звется, - простите, запамятовал. LZX, пожалуй, из оных самый мощный и действительно может жать на порядок лучше алгоритма RAR. Хотя в целом различие алгоритмов - что-то из области холиваров, а следовательно оффтоп согласно форумному уставу, так?
Касательно браузеров объектов могу сказать, что я разрабатываю просмотрщик классов в PowerShell, но время от времени. Может в начале наступающего года доведу его до ума и выложу на обсуждение.

7 (изменено: Аскет, 2012-01-01 14:00:11)

Re: COM/ActiveX: COM-Informer

OFF:

greg zakharov пишет:

LZX, пожалуй, из оных самый мощный и действительно может жать на порядок лучше алгоритма RAR.

Именно. Примечательно также что makecab.exe с опцией алгоритма LZX при максимальном уровне сжатия не даёт того уровня компрессии который обеспечивает com-класс MakeCab.MakeCab.

alexii пишет:

«жмёт … посильнее … (при обычном методе сжатия)» тоже не подтверждаю.

Стоило наверно добавить, "(при обычном методе сжатия в WinRAR'е)".
Небольшой эксперимент:
Создаём .rar-архив файла c:\windows\explorer.exe
Затем выполняем скрипт:

Set Cab = CreateObject("MakeCab.MakeCab")
Cab.CreateCab "explorer.cab", False, False, False
Cab.AddFile "c:\windows\explorer.exe", "explorer.exe"
Cab.CloseCab

Справниваем результаты:

explorer.exe 1009 kb
explorer.cab 327 kb
explorer.rar 335 kb

Выигрыш целых 8 kb.
Но возможно это оттого что стаб меньшего размера. Нужно тестировать на разных входных данных и объёмах.
Скорость - да, в разы уступает. Но если дело касается автоматизации администрирования большого парка компьютеров, с дефолтной поставкой ОС без доп. ПО
(к примеру, сбор отчетности с больши лог-файлами с каждой машины), то вариант с MakeCab.MakeCab несравненно практичнее.

8

Re: COM/ActiveX: COM-Informer

greg zakharov пишет:

Хотя в целом различие алгоритмов - что-то из области холиваров, а следовательно оффтоп согласно форумному уставу, так?

Вынес в отдельную тему: OFF: "MakeCab.MakeCab.1" и WinRAR.