Здравствуйте Аноним, Вы писали:
А>Домен у заказчика я сделать не могу. Этож все компьютеры, использующие пакет должны быть в одном домене? Это невозможно...
Идеальный случай... Можно в разных, но тогда домены должны быть связаны доверительными отношениями. На худой конец чтобы машины небыли подключены к доменам вовсе.
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, то все заработает.