Re[3]: dcom w2ks
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.02.02 00:07
Оценка:
Здравствуйте Аноним, Вы писали:

А>Домен у заказчика я сделать не могу. Этож все компьютеры, использующие пакет должны быть в одном домене? Это невозможно...

Идеальный случай... Можно в разных, но тогда домены должны быть связаны доверительными отношениями. На худой конец чтобы машины небыли подключены к доменам вовсе.

VD>>А хоть одна из машин к какому нибудь домену подключена (не обязательно к W2k)?

А>Нет.

Тогда все не так плохо. :) Нужно завести на каждой машине (и на сервере и на клиенте). Одинаковые учетные записи. Полностью одинаковые! Чтобы и имена и пароли сходились да бита! Тогда NT будет принимать этих пользователей как единого.

VD>>В любом случае здесь ftp://ftp.optim.ru/pub/Tests/ComSec/ лежат примеры к моей статье выходящей в RSDN Mag. Зарегистрируй модули примера ComSec на сервере и клиенте и посмотри на диагноситические сообщения.

А>Посмотрел, зарегистрировал.
А>При запуске SecTest и нажатии "Call secure method".
А>На сервере (w2ks) говорит Отказано в доступе.
А>Пробовал на клиенте (w2kprof) — то-же самое...

Ты msi-ку установил или саму DLL зарегистрировал? Устанавливать нужно именно ее. Далее нужно открыть снэп-ин Component Services, найти приложение ComSec и открыть его свойства. Теперь нужно перейти на закладку Security, выключить (если он включен) бекбокс "Enforce access checks for this application" и переключить "Security level" в "Perform access checks only at the &process level.
Security property will not be included on the object context. COM+ security call context will not be available.". Это будут настройки как у обычного DCOM-приложения.

Теперь в выпадающем списке "Authentication level for calls" выбери "None", а в " Impersonation level" Anonymous. Это позволит выставлять на клиенте любые уровни этих параметров.

Теперь переключись на закладку Identity и выбери пункт " Interactive user". При этом ты должен быть залогинен под учетной записью у которой достаточно прав (лучше под локальным администратором).

Теперь попытайся открыть SecTest (локально) и нажать на кнопку. Должно заработать. Если не заработало, то открой в том же снэп-ине свойства ветки "My Computer" и перейди на закладку "Defaulte Properties. Убедись, что включен чекбокс "Enable Distributed COM on this computer".

Далее перейди к закладке "Default Security" и проверь, что для твоей записи даны права как на активацию, так и на доступ. Теперь запуститься должно обязательно. Если это не так пиши какой результат...

Если все заработало, нужно сделать прокси. Выдели ветку приложения, открой контекстное меню и выбери Export. Далее в визарде выбери создание Proxy и у тебя будет инсталлятор. Проинсталлируй его на клиенте и попытайся запустить SecTest (там же). Должно заработать. Если не заработало... Останови COM+-приложение (Shutdown из контекстного меню) и растрой в Windows звук на запуск приложения. Теперь снова запусти клиента (удаленно) и нажми кнопку. Если звук есть (на сервере), значит проблема с правами доступа... иди проверяй еще раз права доступа по умолчанию. Если нет, то нужно проверять права активации.

Не забудь, что на сервере нужно дать доступ локальной учетной записи точь-в-точь соответствующей такой же на клиентском компьютере. А на клиентский компьютер входить именно под ней. Причем обе машины должны быть залогинены локально (не в домен)!

PS

Честно говоря COM+-совское приложение здесь не совсем кстати. Там где я тебе показал, лежит еще и DCOM-приложение (exe-сервер и клиент). Можешь попробовать поэкспериментировать с ним и dcomcnfg.exe.

VD>> Лучше всего смотреть на это дело из под отладчика.

А>Я в C не очень силен... Неужели все так сложно! Под NT4 сервер все работает. Под w2k prof тоже работает.

Я думаю, что если поколдовать с dcomcnfg.exe, то все заработает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.