Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760

Взаимодействие exe64 с dll32. COM объект без регистрации в реестре

17.02.2016, 00:26. Показов 2190. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
добрый вечер.

windows7 (или выше), visual studio 2013, c++

есть 64 битное приложение (для простоты пусть будет обычное консольное)
и 32 битная библиотека.

нужно наладить взаимодействие при помощи COM объекта.

при этом критично обойтись без регистрации в реестре.

можно ли каким то образом сделать такое?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2016, 00:26
Ответы с готовыми решениями:

OLE без регистрации в реестре
Доброго времени суток. Можно ли использовать OLE без регистрации в реестре?

Связь клиента с локальным exe-сервером без регистрации в реестре
добрый вечер. есть готовый ATLExeServer, и консольный клиент. нужно осуществить взаимодействие между ними без необходимости...

Выполнить поиск в реестре регистрации заданного пользователем расширения
Выполнить поиск заданного пользователем расширения файла в реестре. Если соответствующий раздел в реестре имеется, вывести его значение. ...

7
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,450
17.02.2016, 13:11
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Цитата Сообщение от hoggy Посмотреть сообщение
можно ли каким то образом сделать такое?
MS вроде что то там придумал для этого тут. но я этого не понял и выглядит как то тяжело
1
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.02.2016, 20:05  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
MS вроде что то там придумал для этого тут. но я этого не понял и выглядит как то тяжело
спасибо.

однако, прежде чем написать сюда, я основательно перерыл интернеты.
msdn - первое, где я побывал.
даже нашел у них проект-иллюстрацию (которая без напильника не заработала).

и даже уже сумел организовать взаимодействие между клиентом и сервером.

но есть проблема:

что бы обойтись без регистрации,
нужно организовать манифест для клиента, в котором указывается с какой dll нужно связываться.

проблема здесь в том, что это получается связка: CLSCTX_INPROC_SERVER

вообще, INPROC_SERVER у меня прекрасно заработал.
но это не то, что нужно.

мне же нужно из 64 битного executable связываться с 32 library.
собственно, и com только для этого и нужен изначально.
а значит, что мне нужно что-то вроде CLS_CTX_LOCAL_SERVER

я думал, ком-сервис устроет для меня суррогатный процесс, но нет.
связь не устанавливается.


сейчас я думаю организовать com внутри 32 битного executable

потом для 64 битного executable прописать манифест связи не с dll, а с exe
но не уверен, что сработает.

мне не удалось найти никаких вразумительных материалов на эту тему.

так что я уже второй день какими то
непонятными экспериментами занимаюсь...
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
17.02.2016, 20:51
hoggy, а почему бы не использовать 32-битный rundll32.dll?
Связываться с COM не придется, с регистрацией в реестре тоже.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.02.2016, 23:22  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
а почему бы не использовать 32-битный rundll32.dll?
потому что я слишком плохо знаю материал.
нарыл run32dll.exe,
который позволяет запускать dll на выполнение.
но мне не очевидно, как она должна быть оформлена, что бы работать с COM.

про rundll32.dllмне вообще ничего не известно.

поэтому я и создал тему.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.02.2016, 08:34
Наверняка здесь ты уже побывал, но все же:

INFO: Windows Rundll and Rundll32 Interface
https://support.microsoft.com/en-us/kb/164787

Т.е. как я вижу - нужно из 64-битного exe запустить 32-битный rundll32.exe,
передав к нему путь к 32-битной dll. И dll должна иметь экспортируемую
функцию, оформленную так, как написано в статье.

Цитата Сообщение от hoggy Посмотреть сообщение
мне не очевидно, как она должна быть оформлена, что бы работать с COM
Насколько я помню, COM-сервер в exe без регистрации в реестре
сделать не получится. Registration-Free COM - это только для
внутрипроцессных серверов (inproc, т.е. dll).

А принципиально вообще связываться с COM?
Нельзя ли, например, заюзать RPC вместо него?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.02.2016, 19:24  [ТС]
Цитата Сообщение от Убежденный Посмотреть сообщение
А принципиально вообще связываться с COM?
да. не обязательно dll, можно local com server,
но нужно что бы это был com.
0
0 / 0 / 1
Регистрация: 28.03.2016
Сообщений: 4
31.03.2016, 11:33
У 1с ников есть так называемые технологии создания внешних компонент. Без регистрации используется native api. Документация есть в сети, по запросу "Создание внешних компонент 1с 8.3". Я думаю что можно как то извратиться, и прикрутить это под Ваши задачи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
31.03.2016, 11:33
Помогаю со студенческими работами здесь

Взаимодействие с клиентом steam: Регистрации, авторизация
Собственно в какую сторону копать. Функции нужны именно регистрации,авторизация и чтоб мог работать со steam гуардом(P.S сразу говорю не...

Сетевое взаимодействие используя COM Объект WINDOWS
Подскажите пожалуйста, как в 1с реализовать сетевое взаимодействие с помощью COM объекта Windows? Например, что бы получить XML документ...

Можно Ли В Журнале Регистрации Искать По Ссылке На Объект
Добрый день! Ситуация - в 1С (8.1 серверная конф УТ 10.3) внезапно обнаруживаем в остатках на складе минуса, документ партии -...

Применение изменений в реестре без перезагрузки
Много где обсуждалась данная тема, но так ничего и не работает. SendMessage (HWND_BROADCAST, WM_SETTINGCHANGE, 0,...

Применить изменения в реестре без перезагрузки
Ребят, я сделал, асоциацию файлов (внёс изменение в реестр), у меня возникла проблемма, для того что бы изменения вступили в силу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru