Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
1

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

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

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

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, и консольный клиент. нужно осуществить...

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

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

7
Модератор
3401 / 2172 / 353
Регистрация: 13.01.2012
Сообщений: 8,421
17.02.2016, 13:11 2
Лучший ответ Сообщение было отмечено gru74ik как решение

Решение

Цитата Сообщение от hoggy Посмотреть сообщение
можно ли каким то образом сделать такое?
MS вроде что то там придумал для этого тут. но я этого не понял и выглядит как то тяжело
1
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.02.2016, 20:05  [ТС] 3
Цитата Сообщение от 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
Ушел с форума
Эксперт С++
16478 / 7441 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
17.02.2016, 20:51 4
hoggy, а почему бы не использовать 32-битный rundll32.dll?
Связываться с COM не придется, с регистрацией в реестре тоже.
0
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
17.02.2016, 23:22  [ТС] 5
Цитата Сообщение от Убежденный Посмотреть сообщение
а почему бы не использовать 32-битный rundll32.dll?
потому что я слишком плохо знаю материал.
нарыл run32dll.exe,
который позволяет запускать dll на выполнение.
но мне не очевидно, как она должна быть оформлена, что бы работать с COM.

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

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

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

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

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

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

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


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

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

Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru