• XSS.stack #1 – первый литературный журнал от юзеров форума

COM не работает из запуска Regsvr32

VVS

1917
Premium
Регистрация
08.11.2020
Сообщения
49
Реакции
30
Гарант сделки
1
Через COM собираю нужную мне инфу
Компилирую в ЕХЕ - работает
Компилирую в дллку и стартую через rundll32 - работает
Стартую через regsvr32 - Failed to initialize COM library. Error code: -2147417850

А так же если запускать дллку через regsvr32 и уже в памяти запускать второй файл, который использует COM - будет та же ошибка

Кто-нибудь сталкивался?
 
Последнее редактирование:
Failed to initialize COM library
Это довольно РАСПЛЫВЧАТАЯ информация, может быть лучше скинешь код инициализации либы? DllRegisterServer/DllInstall или что там.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Вопрос наверное больше к тем, кто сталкивался с подобной проблемой

работает и из ехе и рандлл, инициализация самая обычная
может в регсвр какая-то она особенная или руками нужно либу догружать в процесс какую
 
Пожалуйста, обратите внимание, что пользователь заблокирован
работает и из ехе и рандлл, инициализация самая обычная
Ты CoInitializeEx вызываешь, или где у тебя этот HRESULT выпадает? Из под потока внутри regsvr скорее всего COM будет уже инициирован до тебя.
 
Ты CoInitializeEx вызываешь, или где у тебя этот HRESULT выпадает? Из под потока внутри regsvr скорее всего COM будет уже инициирован до тебя.
Да
Код:
hres = CoInitializeEx(0, COINIT_MULTITHREADED);
if (FAILED(hres)) {
    std::cout << hres << std::endl;

    return false;
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Да
Ты я смотрю оптимист. Скорее всего поток внутри regsrv будет STA, а не MTA. И тебе не надо COM инициализировать, он уже должен быть инициализирован.
 
Ты я смотрю оптимист. Скорее всего поток внутри regsrv будет STA, а не MTA. И тебе не надо COM инициализировать, он уже должен быть инициализирован.
Ты был прав. Так работает
Благодарю
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх