![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как распознать COM?
kingdom © (2002-11-22 18:18:00)Задача: На вход дается имя файла (exe или dll)
Вопрос: Как определить является ли файл COM сервером?
Marcus (2002-11-25 18:13:00) [1]> >To All
> Видимо нельзя :((
Есть еще способ, но только если сервер зарегистрирован на машине: открыть раздел
HKEY_CLASSES_ROOT\AppID\server.exe
Если он есть, server.exe - COM сервер. В этом разделе живет параметр AppID, по которому можно дальше найти подробную инфу о сервере.
Fantasist (2002-11-25 18:05:00) [2]Можно еще просто по тексту ехе-шника поискать эту функцию. Часто она там есть, но может оказаться, что он вызывает эту функцию из одной из своих подгружаемых библиотек.
Fantasist (2002-11-25 17:59:00) [3]
> >To All
> Видимо нельзя :((
Ну, чисто теоретически, возможно перехватить вызов API функции CoRegisterClassObject. Потом запускаешь exe и если эта функция вызывается, то почти наверняка это OLE сервер.
kingdom (2002-11-25 12:26:00) [4]>To All
Видимо нельзя :((
вот облом!
kingdom (2002-11-22 18:40:00) [5]>Marcus
К сожалению на EXE это не действует!
Marcus (2002-11-22 18:20:00) [6]hLib := LoadLibrary("test.dll");
if (GetProcAddress(hLib, "DllRegisterServer") <> nil) then
IsComServer := true