Проблема в том, что возвращается S_OK. Я был бы рад увидеть какую-нибудь ошибку. Пока я грешу лишь на то, что удаленный сервер это адрес 127.0.0.1. Опробовать на настоящем удаленном сервере пока нет возможности.
Под Win2k в функции CoInitializeSecurity можно указать дополнительный параметр SOLE_AUTHENTICATION_LIST * pAuthList.
В структуре SEC_WINNT_AUTH_IDENTITY можно указать имя пользователя и пассворд для идентификации пользователя удаленным компонентом.
Таким образом, теоретически, наверное, имелось ввиду, что для запуска удаленного сервера от имени User2\Password2 не обязательно входить в систему на машине клиента под этим пользователем, а можно зайти под пользователем User1\Password1 и просто указать значения User2 и Password2 в структуре SEC_WINNT_AUTH_IDENTITY.
Однако, это не работает... Точнее работает, но не так как нужно. Если даже указать несуществующего пользователя NotExistingUser, которого нет на клиентской машине и нет в ACL удаленного сервера можно создать instance объекта. Просто на самом деле вызов все-таки происходит от имени интерактивного пользователя клиентской машины (User1\Password1), а не от имени User2\Password2. Почему-то игнорируются значения, указанные при инициализации безопасности процесса. Кто-нибудь сталкивался с такой проблемой? Хэлпайте, если поняли что я тут написал :о)
З.Ы. кусок кода примерно такой:
::CoInitialize(NULL);
ty dolzhen skohfigurirovat` etot object na servere ispolzui "dcomcnfg.exe"
i posmotri "Identity" tab, pohozhe chto u tebia stoit interactive user to run this object.
CoInitializeSecurity можно вызвать только ОДИН раз, в твоем случае она скорее всего уже вызывалась самой подсистемой СОМ. Посмотри, что она возвращает, скорее всего это будет RPC_E_TOO_LATE, что как раз и говорит о том, что она уже вызывалась.
Проблема в том, что возвращается S_OK. Я был бы рад увидеть какую-нибудь ошибку. Пока я грешу лишь на то, что удаленный сервер это адрес 127.0.0.1. Опробовать на настоящем удаленном сервере пока нет возможности.
Хм... Вот я и говорю, что не понятно.28.01.02 15:20 Автор: Sandy <Alexander Stepanov> Статус: Elderman
> Проблема в том, что возвращается S_OK. Я был бы рад увидеть > какую-нибудь ошибку. Пока я грешу лишь на то, что удаленный > сервер это адрес 127.0.0.1. Опробовать на настоящем > удаленном сервере пока нет возможности.
А на локальном сервере, на мой взгляд, и не должно работать. Ведь ты уже инициализировал один раз секьюрити для своего DCOM (или система инициализировала), она и берет имеющиеся значения юзер/пассворд. А те, что ты ей даешь - игнорирует. А почему удаленный сервер нельзя использовать? Сетки локальной нет, что-ли? Тогда дай своему компу IP адрес какой-нибудь от балды, типа 10.10.10.10 - и пробуй!