Написал программу на Delphi, которая настраивает DCOM. Визуально проверяю результаты её работы с помощью dcomcnfg – всё верно, галочки стоят где нужно, нужные пользователи добавлены. Пытаюсь установить соединение по сети – ошибка "Отказано в доступе"!
Выяснил, что не правильно работают процедуры:
ChangeMachineLaunchRestriction('Все', True, True);
ChangeDefaultLaunchACL('Все', True, True);
Кто нибудь сталкивался с подобным? Очень нужна помощь!
27 июля 2008 в 3:00
а если спросить у ListDefaultAccessACL?
26 июля 2008 в 16:04
'everyone' – это для английской версии.
Вот текст программы:
SetEnableDCOM(True); //Разрешить использование dcom на этом компе
SetDCOMComProper(RPC_C_AUTHN_LEVEL_NONE, RPC_C_IMP_LEVEL_IDENTIFY);//Уровень проверки подлинности – "нет". Уровень олицитворения – "Идентификация"
{для русской версии ос}
ChangeMachineAccessRestriction('Все', True, True); //Права доступа-Изменить ограничения
ChangeMachineAccessRestriction('Анонимный вход', True, True);
ChangeDefaultAccessACL('Все', True, True);//Права доступа-Изменить настройки по умолчанию
ChangeDefaultAccessACL('Анонимный вход', True, True);
ChangeMachineLaunchRestriction('Все', True, True);//Разрешение на запуск и активацию-Изменить ограничения
ChangeMachineLaunchRestriction('Анонимный вход', True, True);
//ChangeDefaultLaunchACL('Все', True, True);//Разрешение на запуск и активацию-Изменить настройки по умолчанию
//ChangeDefaultLaunchACL('Анонимный вход', True, True);
26 июля 2008 в 11:01
может оно все-таки непонятного пользователя 'все' записывает как обычного 'everyone'?
26 июля 2008 в 9:04
Написано то написано) но не работает.
Самое интересное, что, после того как програмно dcom настрою, запускаю утилиту dcomcnfg -> свойства компьютера-> безопасность com -> разрешение на запуск и активацию-> просто нажимаю применить(ничего не меняя) и всё начинает работать.
Может движок дкомовский изменения не подхватывает?
Или кнопка "Применить" что-то особенное в реестр пишет?
25 июля 2008 в 20:05
там же в описании процедуры ChangeDefaultAccessACL все написано.
25 июля 2008 в 10:01
'Все' – это и есть'Everyone')))
Вот алгоритм моих действий:
1. Написал простенькие "com сервер" и "клиент" для тестирования настроек DCOM.
2. Зарегистрировал "сom сервер" на двух машинах, соединенных по сети.
3. На машине-сервере настроил руками dcomcnfg.exe – свойства сервера – вкладка Удостоверение – выбрал учетную запись – Запускающий пользователь, вместо Текущий пользователь.
4. На машине-сервере настроил руками DCOM.
5. На машине-клиенте запустил приложение "клиент", указал ip сервера и соединение установлено! Ура!
ЗАТЕМ
6. На машине-сервере настроил, теперь уже ПРОГРАМНО, DCOM.
7. На машине-клиенте запустил приложение "клиент", указал ip сервера и
ошибка "Отказано в доступе"!
Визуально проверяю ПРОГРАМНЫЕ настройки DCOM. Они верные! Что за мистика?
Пользовался этими материалами:
//www.delphikingdom.com/asp/viewitem.asp?catalo...
24 июля 2008 в 22:04
Может вместо 'Все' писать 'Everyone'?
24 июля 2008 в 22:02
а кто такой 'все'?