![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как зарегистрить DCOM-сервер, написанный как DLL?
Mateus © (2002-05-16 08:58:00)Как зарегистрить DCOM-сервер, написанный как DLL ?
Хоть программно, хоть из командной строки ...
Adder (2002-05-16 11:29:00) [1]На самом деле все можно сделать.... сейчас не очень помню подробности.... в общем , суть в том, что для твоей Dll можно организовать суррогатный процесс ....из дома могу написать подробнее... (ключ реестра APPID)
Slava (2002-05-16 11:20:00) [2]А вот и Правда
> Anatoly Podgoretsky © (16.05.02 11:13)
:o)))
Mateus (2002-05-16 11:19:00) [3]2Anatoly Podgoretsky © (16.05.02 11:13)
Просто DLL не является автономной единицей, а присоединяется к какому нибудь процессу, для это и потребуется делать .exe сервер
Буквально это означает, что если DCOM-сервер выполнен в виде dll, то ни о каком удаленном доступе речи быть не может? Для этих целей нужно использовать только exe-вариант.
Я все правильно осознал ?
Slava (2002-05-16 11:17:00) [4]Я тоже бился одно время над этой проблемой.
В итоге было высказано предположение (кстати, если мне не изменяет память, товарищем Romkin"ым :o)), что код из DLL подгружается в адресное пространство твоей программы, а для удаленного компьютера такое невозможно. Отсюда объясняется следующее:
Работает:
1. DLL на твоей машине + TDCOMConnection
2. DLL на удаленной машине + TSocketConnection
3. EXE на любой машине + хоть TDCOMConnection, хоть TSocketConnection
Не работает:
1. DLL на удаленной машине + TDCOMConnection
Но это все предположения, полученные опытным путем.
PS Хотелось бы узнать Правду
Anatoly Podgoretsky (2002-05-16 11:13:00) [5]Просто DLL не является автономной единицей, а присоединяется к какому нибудь процессу, для это и потребуется делать .exe сервер
Mateus (2002-05-16 11:03:00) [6]2 Slava ©
Насколько я знаю, DLL не может выступать в качестве DCOM-сервера, т.е. нельзя обратиться к ней удаленно через TDCOMConnection.
Гм... Откуда такая информация ? Подскажи, может я зря время теряю.
Slava (2002-05-16 10:47:00) [7]> Mateus (16.05.02 09:49)
В случае regsvr32.exe DCOM-сервер регистрируется как обычный ActiveX и не более, то есть удаленное обращение к нему невозможно.
Насколько я знаю, DLL не может выступать в качестве DCOM-сервера, т.е. нельзя обратиться к ней удаленно через TDCOMConnection.
Romkin (2002-05-16 10:26:00) [8]А доступ по DCOM - отдельная статья. Сначала регистрируешь regsvr32, а потом запускаешь dcomcnfg и делаешь что надо
Ограничения: Сервером может быть только станция с NT (4 или 2000 pro), в сети должен быть контроллер домена
Mateus (2002-05-16 10:25:00) [9]Ясно, разберусь, спасибо.
SEM (2002-05-16 10:13:00) [10]Программно:
1. Вызвать OleInitialize
2. Загрузить DLL c помощью LoadLibraryEx
3. Найти адрес функции регистрации NAME_DLLREGISTERSERVER
с помощью GetProcAddress
4. Вызвать найденную функцию
5. Вызвать FreeLibrary и OleUnInitialize
Если не понятно, могу кинуть на мыло свой код.
Mateus (2002-05-16 09:49:00) [11]В случае regsvr32.exe DCOM-сервер регистрируется как обычный ActiveX и не более, то есть удаленное обращение к нему невозможно.
Меню DELPHI не подходит, это нужно сделать в процессе инсталляции.
Как зарегистрить DCOM-сервер, написанный как DLL ?
Хоть программно, хоть из командной строки ...
Lord Warlock (2002-05-16 09:27:00) [12]из меню Delphi пробовал?
Lord Warlock (2002-05-16 09:18:00) [13]Любой СОМ сервер - ActiveX
Mateus (2002-05-16 09:16:00) [14]Нет, не подходит Regsvr32.exe.
Не для этого она предназначена.
Как зарегистрить DCOM-сервер, написанный как DLL ?
Хоть программно, хоть из командной строки ...
Mateus (2002-05-16 09:09:00) [15]Наверное имелось в виду Regsvr32.exe ?
А это случаем, не регистрация просто как ActiveX ?
Сейчас попробую ...
Lord Warlock (2002-05-16 09:04:00) [16]Revsvr32.exe