183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
||||||
1 | ||||||
DCOM авторизация20.01.2017, 17:44. Показов 2026. Ответов 2
Всем привет!
Можно ли создать экземпляр удалённого COM сервера и работать с ним, не имея "одинаковых" пользователей в системах? Поэкспериментировав со структурой COAUTHINFO , получилось создать экземпляр (в рантайме задаю хост, логин и пароль), однако, вызов метода возвращает ошибку ERROR_ACCOUNT_DISABLED , при дефолтной авторизации (указатель на COAUTHINFO в структуре COSERVERINFO нулевой) и наличии нужной учётки метод вызывается. Так заполнена структура:
Есть мнение, что нужно пользоваться функцией CoInitializeSecurity , но пока не выяснил как.Добавлено через 6 часов 16 минут Используя функцию CoSetProxyBlanket к полученному интерфейсу иногда стало что-то получаться (внезапно проходил вызов метода!), но то ли я "достал" DCOM то ли это так и должно быть, но попытки получения интерфейса с последующей попыткой вызова метода, стали выдавать ошибки с переменным успехом (как правило E_ACCESSDENIED ). Как настроить параметры аутентификации? Я отдыхать...
0
|
20.01.2017, 17:44 | |
Ответы с готовыми решениями:
2
Программная настройка DCOM Как запустить DCOM сервер? Asp.net+iis+dcom=ошибка при вызове функций DCOM сервера DCOM-клиент в виде сервиса не соединяется с DCOM-сервером!? |
Ушел с форума
|
|
21.01.2017, 12:56 | 2 |
0
|
183 / 181 / 66
Регистрация: 15.02.2015
Сообщений: 515
|
|
23.01.2017, 11:19 [ТС] | 3 |
Параметры по большей части не трогал, в правах доступа в и разрешениях на запуск и активацию проставил галочки "разрешить" всем группам/пользователям.
В свойствах по умолчанию сегодня уже выбрал уровень олицетворения с "определить" на "олицетворение" (уровень проверки подлинности по умолчанию "подключиться"), у самого COM сервера выбрал уровень проверки подлинности на "подключиться" (было "отсутствует"). Теперь CoCreateInstanceEx всегда возвращает E_ACCESSDENIED или 0x800706BA (The RPC server is unavailable), при этом успешно создать экземпляр иногда получается, если запустить приложение не из под студии (из под студии запускал в Release). Параметры проверки: RPC_C_AUTHN_WINNT , RPC_C_AUTHZ_NONE , RPC_C_AUTHN_LEVEL_CONNECT , RPC_C_IMP_LEVEL_IMPERSONATE (не ясно на что влияет, если в настройках DCOM было "определить", то CoCreateInstanceEx выполнялся только с этим параметром). Если не вызывать CoSetProxyBlanket для созданного экземпляра, то вызов любого метода возвращает ошибку ERROR_ACCOUNT_DISABLED , что, как я понял, означает что этот вызов делается с параметрами "по умолчанию", а учетной записи для этого нет, значит CoSetProxyBlanket нужен (или альтернатива), но с какими параметрами? Теми же что и вызывается CoCreateInstanceEx ?
0
|
23.01.2017, 11:19 | |
23.01.2017, 11:19 | |
Помогаю со студенческими работами здесь
3
COM, DCOM, COM+, MTS Использование DCOM Литература по DCOM Ошибка DCOM!? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |