169 похожих чатов

Я тут задумался о следующем Вот есть технология COM, я понимаю

одну её часть, когда мы работаем с примитивными COM объектами
Ну это получается как будто DLL подгрузили в память процесса, просто задокументировав с обоих сторон "карту" методов (интерфейс)
Но... теперь другой случай - например работа с Excel

Здесь уже два процесса: мой и сам Excel
Я задумался, а как происходит межпроцессное взаимодействие здесь? Ну вроде есть RPC у MS и вроде как через этот самый RPC
Это получается что - я из своего процесса через MSRPC могу вызывть какой=то обработчик в другом процессе?

Хорошо, а как тогда уже сам Excel разруливает с каким экземпляром Excel ему работать, если их запущено несколько экземпляров?
Там тоже какой-то межпроцессный обмен должен быть - он уже не через RPC идёт наверное, а с помощью каких-то других техник?

А вообще эти мысли и вопросы у меня возникли из-за того, что есть один комплекс программ, общение внутри этого комплекса программ между собой идёт через COM, и документации нету.... а мне нужно кое-что программно сделать, то, что сейчас делаетс вручную... вот хочу как-то понять какой COM объект создать/метод какого интерфейса вызвать...
Создание COM объектов перехватывал, GUID'ы логировал, но часть из них не зарегистрирована в системе, а в другой часть ничего интересного не нашлось

Теперь немного почитав думаю что надо что-то перехватывать в RPCRT4.DLL чтобы отловить что вызывается в нужный мне момент...?

4 ответов

36 просмотров

Дон Бокс, Сущность технологии COM. Ещё был цикл статей попроще, на королевстве.

notme- Автор вопроса
Alexey Gavrilov
Дон Бокс, Сущность технологии COM. Ещё был цикл ст...

Долго читать, а сделать нужно побыстрее ) Если идёт работа с локальными приложениями, то какой транспорт будет использоваться в MSRPC? Чем перехватить, чтобы не изобретать велосипедов?🤔

Есть такое понятие как COM севрер

https://learn.microsoft.com/ru-ru/windows/win32/com/com-clients-and-servers

Похожие вопросы

Обсуждают сегодня

Если у меня есть такой класс: Object = {} function Object:new(a_name, a_transform, a_color, a_mesh, a_material, a_shader, a_textures) local private = {} private.n...
Cuarno Vile
4
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
зачем же переименовывать ? чтобы кол-во участников возросло или вдруг IBM от этого снова на свифте начнет кодить ? Я не понимаю что страшного в том что свифт гавно, если это т...
Oleh Nerzh
10
здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Добрый день! Подскажите, пожалуйста: какими компетенциями нужно обладать, чтобы претендовать на работу эрланг (отдельная благодарность, если про элексир тоже подскажете) разр...
via ☸️ led
20
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Карта сайта