• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Подключение к Com на удалённой машине

  • Автор темы jashilko
  • Дата начала
Статус
Закрыто для дальнейших ответов.
J

jashilko

Теперь у меня вторая проблема:

Имеется сервер автоматизации в виде exe, имеются несколько клиентов которые к нему подключаются и должны получать события. То есть один клиент по нажатию кнопки событие генерирует, и все! клиенты его получают.

Всё работает на локальной машине, как только я пытаюсь запустить клиента на локальной машине, он создаёт всё равно свой сервер, никак не связанный с тем, к которому подключены локальные клиенты.

У клиентов есть функция подключения GetActiveObject, если объект получили, то всё здорово, если нет - создаём. Если клиент удалён, используем функцию CreateRemoteComObject но она именно создаёт новый, она не подключается к уже существующему.

Почему так и в чём решение?

Подключение клиента:

Код:
 GetActiveObject(CLASS_autom, nil, ActiveObj);

if ActiveObj <> nil then
AutoTest := ActiveObj as Iautom
else
AutoTest := Coautom.Create;
EventSink := TEvent.Create as IEventSink;
Container := AutoTest as IConnectionPointContainer;
OleCheck(Container.FindConnectionPoint(IEventSink, ConnectionPoint));
OleCheck(ConnectionPoint.Advise(EventSink, Cookie));



инициализация сервера:

Код:
 inherited Initialize;
FConnectionPoints := TConnectionPoints.Create(Self);
if AutoFactory.EventTypeInfo <> nil then
FConnectionPoints.CreateConnectionPoint(AutoFactory.EventIID,
ckMulti, EventConnect);
RegisterActiveObject(Self as IUnknown, CLASS_autom,
ACTIVEOBJECT_WEAK, FObjRegHandle);
 
T

Titan

При работе с COM не забывайте еще про конфигурирование (dcomcnfg).

Ну и Ваша фраза:
Всё работает на локальной машине, как только я пытаюсь запустить клиента на локальной машине, он создаёт всё равно свой сервер, никак не связанный с тем, к которому подключены локальные клиенты.
несовсем понятна
 
S

SNike

При подключении к COM-объекту на удаленном ПК (т.е. получается DCOM), нужно использовать DComCnfg и особое внимание уделить тому от какого имени (учетной записи) производится запуск программ и получение доступа к COM-объекту. Лучше всего если сеть будет доменная, и там произвести настройку запуска и доступа на определенную учетную запись. Полезно будет посмотреть и журналы событий windows при попытках доступа к COM.
 
T

Titan

Помимо самих настроек DCOM, нужно еще и не забывать какую модель для экземпляра вы испльзуете...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!