1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
1 | |
Программная настройка DCOM20.07.2015, 17:33. Показов 5324. Ответов 39
Метки нет (Все метки)
Нужно программно настроить DCOM.Меняю в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole) настройки настройки в REG_SZ,всё работает ,что делать с бинарными файлами,такими как: DefaultAccessAermissions,DefaultLaunchAermissions,итд.,не могу найти. В них,как я понимаю,и задаются права доступа. Поменял в самом dcomcnfg.exe вижу в реестре изменения ,но закономерности не вижу.На других форумах подобные темы поднимались но ответа там не нашёл.Буду благодарен за любую информацию как это обработать на с++.
0
|
20.07.2015, 17:33 | |
Ответы с готовыми решениями:
39
Asp.net+iis+dcom=ошибка при вызове функций DCOM сервера DCOM-клиент в виде сервиса не соединяется с DCOM-сервером!? Программная настройка BDLookupComboBox Программная настройка ADOConnection |
Ушел с форума
|
|
20.07.2015, 19:10 | 2 |
Прежде всего расскажите, какие именно настройки вы хотите изменить.
Обычно в LaunchPermissions и AccessPermissions прописываются параметры безопасности для запуска и подключения к COM-серверу. И да, их вполне можно менять программно, хоть это и не документировано.
0
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
20.07.2015, 19:19 [ТС] | 3 |
Убежденный, dcomcnfg->Службы компонентов->Компьютеры->Мой компьютер->Свойства->Безопасность COM
Вот эти.
0
|
Ушел с форума
|
||||||
20.07.2015, 19:41 | 4 | |||||
Я делал следующим образом: сначала создавал дескриптор безопасности и добавлял
туда разрешения для нужных пользователей и групп, а затем сохранял этот дескриптор как REG_BINARY в ключ реестра HKLM\SOFTWARE\Classes\AppId\<AppId-GUID-компонента>, в значения LaunchPermission и AccessPermission. Разумеется, если разрешения для LaunchPermission и AccessPermission различаются, потребуется два security- дескриптора. В разделе CLSID COM-компонента обязательно должна быть ссылка на его AppId, иначе разрешения действовать не будут. Это эквивалентно ручной настройке разрешений доступа через dcomcnfg.exe, проверял на XP-Win7, 32- и 64-битных. В ObjBase.h для соответствующих разрешений определены такие константы:
Получается примерно такая табличка для флагов доступа: Код
LaunchPermission Local Launch - 0x3 Remote Launch - 0x5 Local Activation - 0x9 Remote Activation - 0x11 AccessPermission Local Access - 0x3 Remote Access - 0x5 Можно использовать BuildSecurityDescriptor, заполнив вручную структуры EXPLICIT_ACCESS и TRUSTEE, а можно описать разрешения на языке SDDL и позвать ConvertStringSecurityDescriptorToSecurityDescriptor. В обоих случаях результат будет идентичным - вы получите self-relative SD, который можно сериализовать в реестр.
2
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
20.07.2015, 22:42 [ТС] | 5 | |||||
Убежденный, Никогда бы сам не наткнулся на такую реализацию.На msdn взял пример.
https://msdn.microsoft.com/en-... s.85).aspx и тут почитал http://rubooks.org/book.php?bo... =149(глава 15) у меня тут вопрос возник,по этой записи
0
|
Ушел с форума
|
|
20.07.2015, 23:10 | 6 |
SECURITY_ATTRIBUTES задается при создании объекта.
В этой структуре указывается дескриптор безопасности, а также то, сможет ли хэндл объекта наследоваться в дочерние процессы. В данном случае дескриптор безопасности устанавливается для ключа реестра (если он создается, а не открывается).
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
20.07.2015, 23:33 [ТС] | 7 |
Убежденный, Можете ещё подсказать?
ea[0].Trustee.ptstrName = (LPTSTR) pEveryoneSID; откуда мы берём pEveryoneSID,это стандартное значение? тут просто не нашёл такого :https://msdn.microsoft.com/en-... s.85).aspx И не могу понять ,куда прописываются COM_RIGHTS_EXECUTE,это какие-то поля EXPLICIT_ACCESS или TRUSTEE ?
0
|
Ушел с форума
|
|
20.07.2015, 23:48 | 8 |
pEveryoneSID - это, по всей вероятности, SID группы "Все" (Everyone).
Предопределенные SID-ы есть здесь: Well-known security identifiers in Windows operating systems https://support.microsoft.com/en-us/kb/243330 В EXPLICIT_ACCESS вы указываете, сами права доступа и параметры наследования, а в TRUSTEE перечисляются субъекты безопасности (т.е. пользователи, группы и т.п.), для которых эти разрешения нужно применить. Лично я предпочитаю не связываться с "голыми" EXPLICIT_ACCESS/TRUSTEE/ACL/etc, а сразу выразить свои намерения через SDDL-строку, сконвертить ее в дескриптор безопасности (ConvertStringSecurityDescriptorToSecurityDescriptor) и уже дальше что-то делать. Например, вот как выглядит SDDL-строка для папки, устанавливающая полный доступ для всех с наследованием в дочерние объекты и задающая владельцем администраторов: Код
O:BAG:BAD:P(A;CIOI;GA;;;WD) O - Owner, т.е. владелец, в данном случае это BA, т.е. Builtin Administrators. G - Group, первичная группа параметры те же. Далее идет D, т.е. DACL, список контроля доступа, причем P = Protected, т.е. защищенный от наследования от объектов верхнего уровня. Далее, в скобках: A - Access Allowed, т.е. тип доступа - разрешающий, CIOI - это Container Inherit + Object Inherit, означает, что дочерние контейнерные (C) и неконтейнерные (O) объекты будут наследовать данные разрешения. Потом идет GA, то есть, GENERIC_ALL, полная маска доступа, ну и WD - это группа "World", т.е. "Все" (она же "Everyone"). Про SDDL-синтаксис подробнее можно почитать здесь: Security Descriptor Definition Language https://msdn.microsoft.com/en-... 85%29.aspx Кстати, вместо "GA", "GR" и т.п. можно указывать "сырые" флаги доступа в шестнадцатеричном виде. Пример SDDL для процесса: Код
D:(A;;0x00100000;;;WD)
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
21.07.2015, 00:10 [ТС] | 9 |
Да,есть над чем поразмыслить,пойду обрабатыватьСпасибо Вам.
0
|
Ушел с форума
|
|
21.07.2015, 08:11 | 10 |
Я рекомендую заглянуть в соответствующую главу книги "Системное
программирование в Windows" А. Побегайло, там это вещи с безопасностью хорошо описаны. Ну и в MSDN тоже, само собой. Больше нигде толкового описания не встречал.
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
21.07.2015, 22:34 [ТС] | 11 | |||||
Убежденный,я записал а реестр ,но что-то не могу найти где ошибся.В настройках безопасности 3 группы сразу создаётся,причём разные для LaunchPermissions и AccessPermissions.
0
|
Ушел с форума
|
|
21.07.2015, 22:50 | 12 |
Вы не то пишете в реестр.
Писать надо не SECURITY_ATTRIBUTES, а сам SECURITY_DESCRIPTOR. И REG_OPTION_VOLATILE уберите, из-за нее ключ исчезнет при следующей же загрузке компа.
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
21.07.2015, 22:56 [ТС] | 13 | |||||
Убежденный, Так я понимаю?Просто у меня щас настройки создаются,но групп там нет.
0
|
Ушел с форума
|
|
22.07.2015, 08:23 | 14 |
Уже лучше.
Только не "sizeof(sa.lpSecurityDescriptor)", что бессмысленно, т.к. sizeof любого указателя будет всегда равен "sizeof (void *)" (4 на x86 и 8 на x64), а здесь нужна длина security-дескриптора. Получить можно функцией GetSecurityDescriptorLength. -------- И это еще не все. InitializeSecurityDescriptor создает дескриптор в так называемом absolute-формате, он еще не пригоден для сохранения в реестре, сначала нужно сконвертировать его в self-relative-формат и только после этого сохранять. Сделать это можно функцией MakeSelfRelativeSD. Absolute and Self-Relative Security Descriptors https://msdn.microsoft.com/en-... 85%29.aspx
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
22.07.2015, 20:55 [ТС] | 15 | |||||
Убежденный, Нужно ли инициализировать дескриптор ,в который выходные данные записываются?Я пробовал но это не помогло ,обращаюсь к запрещёной памяти.Выдаёт EAcccessViolation.Начинаю заниматься "вангованием"
0
|
Ушел с форума
|
|
22.07.2015, 21:16 | 16 |
Сообщение было отмечено zorro117 как решение
Решение
Ух, как все запущено !
MakeSelfRelativeSD: первым аргументом передается указатель на существующий SD, вторым - указатель на буфер достаточного размера, чтобы вместить в себя другой SD, и третим - указатель на переменную DWORD, которая хранит размер этого буфера и в которую на выходе будет записан итоговый размер SD. Здесь второй параметр NULL, а в третьем вообще какая-то ерунда (GetSecurityDescriptorLength, приведенный к указателю). Какого результата вы ждете ?
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
23.07.2015, 19:22 [ТС] | 17 |
Убежденный, Исправил,заработало!Спасибо!Каждый ответ исчерпывающий,не сразу просто врубился.
0
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
25.07.2015, 18:28 [ТС] | 18 |
Убежденный, а вы не подскажете где находится полный список групп ,пользователей, встроенных субъектов безопасности итд.Хочу считать.
http://windata.ru/uploads/2011/06/win043_thumb.png
0
|
Ушел с форума
|
|
25.07.2015, 18:47 | 19 |
Так я уже приводил ссылку выше:
Well-known security identifiers in Windows operating systems https://support.microsoft.com/en-us/kb/243330 Здесь перечислены все встроенные идентификаторы безопасности. Только этот список не постоянный, с выходом каждой новой версии Windows он может пополняться новыми элементами. Например, в Windows Vista появились SID-ы для integrity levels, в Windows 8 есть SID-ы для AppContainer ("песочницы" modern-приложений) и т.п.
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
25.07.2015, 19:00 [ТС] | 20 |
Убежденный, про эту ссылку помню,просто может где-то в реестре можно считать,что бы на конкретной машине вывести полный список.
0
|
25.07.2015, 19:00 | |
25.07.2015, 19:00 | |
Помогаю со студенческими работами здесь
20
Программная настройка MasterSource и MasterFields Программная настройка чувствительности микрофона Программная настройка начальной страницы Программная настройка роутера TP-Link Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |