1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
Программная настройка DCOM20.07.2015, 17:33. Показов 5689. Ответов 39
Метки нет Все метки)
(
Нужно программно настроить DCOM.Меняю в реестре (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\O le) настройки настройки в REG_SZ,всё работает ,что делать с бинарными файлами,такими как: DefaultAccessAermissions,DefaultLaunchAe rmissions,итд.,не могу найти. В них,как я понимаю,и задаются права доступа. Поменял в самом dcomcnfg.exe вижу в реестре изменения ,но закономерности не вижу.На других форумах подобные темы поднимались но ответа там не нашёл.Буду благодарен за любую информацию как это обработать на с++.
0
|
20.07.2015, 17:33 | |
Ответы с готовыми решениями:
39
Asp.net+iis+dcom=ошибка при вызове функций DCOM сервера DCOM-клиент в виде сервиса не соединяется с DCOM-сервером!? Программная настройка BDLookupComboBox |
Ушел с форума
![]() ![]() |
|
20.07.2015, 19:10 | |
Прежде всего расскажите, какие именно настройки вы хотите изменить.
Обычно в LaunchPermissions и AccessPermissions прописываются параметры безопасности для запуска и подключения к COM-серверу. И да, их вполне можно менять программно, хоть это и не документировано.
0
|
Ушел с форума
![]() ![]() |
|||||||||||
20.07.2015, 19:41 | |||||||||||
Я делал следующим образом: сначала создавал дескриптор безопасности и добавлял
туда разрешения для нужных пользователей и групп, а затем сохранял этот дескриптор как REG_BINARY в ключ реестра HKLM\SOFTWARE\Classes\AppId\<AppId-GUID-компонента>, в значения LaunchPermission и AccessPermission. Разумеется, если разрешения для LaunchPermission и AccessPermission различаются, потребуется два security- дескриптора. В разделе CLSID COM-компонента обязательно должна быть ссылка на его AppId, иначе разрешения действовать не будут. Это эквивалентно ручной настройке разрешений доступа через dcomcnfg.exe, проверял на XP-Win7, 32- и 64-битных. В ObjBase.h для соответствующих разрешений определены такие константы:
Получается примерно такая табличка для флагов доступа:
Можно использовать BuildSecurityDescriptor, заполнив вручную структуры EXPLICIT_ACCESS и TRUSTEE, а можно описать разрешения на языке SDDL и позвать ConvertStringSecurityDescriptorToSecurit yDescriptor. В обоих случаях результат будет идентичным - вы получите self-relative SD, который можно сериализовать в реестр.
2
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
20.07.2015, 22:42 [ТС] | ||||||
Убежденный, Никогда бы сам не наткнулся на такую реализацию
![]() https://msdn.microsoft.com/en-... s.85).aspx и тут почитал http://rubooks.org/book.php?bo... =149(глава 15) у меня тут вопрос возник,по этой записи
![]()
0
|
Ушел с форума
![]() ![]() |
|
20.07.2015, 23:10 | |
SECURITY_ATTRIBUTES задается при создании объекта.
В этой структуре указывается дескриптор безопасности, а также то, сможет ли хэндл объекта наследоваться в дочерние процессы. В данном случае дескриптор безопасности устанавливается для ключа реестра (если он создается, а не открывается).
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
20.07.2015, 23:33 [ТС] | |
Убежденный, Можете ещё подсказать?
![]() 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 | ||||||||||||
pEveryoneSID - это, по всей вероятности, SID группы "Все" (Everyone).
Предопределенные SID-ы есть здесь: Well-known security identifiers in Windows operating systems https://support.microsoft.com/en-us/kb/243330 наследования, а в TRUSTEE перечисляются субъекты безопасности (т.е. пользователи, группы и т.п.), для которых эти разрешения нужно применить. Лично я предпочитаю не связываться с "голыми" EXPLICIT_ACCESS/TRUSTEE/ACL/etc, а сразу выразить свои намерения через SDDL-строку, сконвертить ее в дескриптор безопасности (ConvertStringSecurityDescriptorToSecuri tyDescriptor) и уже дальше что-то делать. Например, вот как выглядит SDDL-строка для папки, устанавливающая полный доступ для всех с наследованием в дочерние объекты и задающая владельцем администраторов:
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 для процесса:
1
|
Ушел с форума
![]() ![]() |
|
21.07.2015, 08:11 | |
Я рекомендую заглянуть в соответствующую главу книги "Системное
программирование в Windows" А. Побегайло, там это вещи с безопасностью хорошо описаны. Ну и в MSDN тоже, само собой. Больше нигде толкового описания не встречал.
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
21.07.2015, 22:34 [ТС] | ||||||
Убежденный,я записал а реестр ,но что-то не могу найти где ошибся.В настройках безопасности 3 группы сразу создаётся,причём разные для LaunchPermissions и AccessPermissions.
0
|
Ушел с форума
![]() ![]() |
|
21.07.2015, 22:50 | |
Вы не то пишете в реестр.
Писать надо не SECURITY_ATTRIBUTES, а сам SECURITY_DESCRIPTOR. И REG_OPTION_VOLATILE уберите, из-за нее ключ исчезнет при следующей же загрузке компа.
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
||||||
21.07.2015, 22:56 [ТС] | ||||||
Убежденный, Так я понимаю?Просто у меня щас настройки создаются,но групп там нет.
0
|
Ушел с форума
![]() ![]() |
|
22.07.2015, 08:23 | |
Уже лучше.
Только не "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 [ТС] | ||||||
Убежденный, Нужно ли инициализировать дескриптор ,в который выходные данные записываются?Я пробовал но это не помогло ,обращаюсь к запрещёной памяти.Выдаёт EAcccessViolation.Начинаю заниматься "вангованием"
![]()
0
|
Ушел с форума
![]() ![]() |
|
22.07.2015, 21:16 | |
![]() Решение
Ух, как все запущено !
![]() MakeSelfRelativeSD: первым аргументом передается указатель на существующий SD, вторым - указатель на буфер достаточного размера, чтобы вместить в себя другой SD, и третим - указатель на переменную DWORD, которая хранит размер этого буфера и в которую на выходе будет записан итоговый размер SD. Здесь второй параметр NULL, а в третьем вообще какая-то ерунда (GetSecurityDescriptorLength, приведенный к указателю). Какого результата вы ждете ?
1
|
1 / 1 / 1
Регистрация: 12.07.2015
Сообщений: 62
|
|
25.07.2015, 18:28 [ТС] | |
Убежденный, а вы не подскажете где находится полный список групп ,пользователей, встроенных субъектов безопасности итд.Хочу считать.
http://windata.ru/uploads/2011/06/win043_thumb.png
0
|
Ушел с форума
![]() ![]() |
|
25.07.2015, 18:47 | |
Так я уже приводил ссылку выше:
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 [ТС] | |
Убежденный, про эту ссылку помню,просто может где-то в реестре можно считать,что бы на конкретной машине вывести полный список.
0
|
25.07.2015, 19:00 | |
Помогаю со студенческими работами здесь
20
Программная настройка ADOConnection Программная настройка MasterSource и MasterFields Программная настройка чувствительности микрофона Программная настройка начальной страницы Программная настройка роутера TP-Link Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
|
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
|
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
|
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
|
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
|
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
|
Настройка MTProxy
Loafer 11.06.2025
Дополнительная информация к инструкции по настройке MTProxy:
Перед сборкой проекта необходимо добавить флаг -fcommon в конец переменной CFLAGS в Makefile.
Через crontab -e добавить задачу:
0 3. . .
|
Изучаем Docker: что это, как использовать и как это работает
Mr. Docker 10.06.2025
Суть Docker проста - это платформа для разработки, доставки и запуска приложений в контейнерах. Контейнер, если говорить образно, это запечатанная коробка, в которой находится ваше приложение вместе. . .
|
Тип Record в C#
stackOverflow 10.06.2025
Многие годы я разрабатывал приложения на C#, используя классы для всего подряд - и мне это казалось естественным. Но со временем, особенно в крупных проектах, я стал замечать, что простые классы. . .
|
Разработка плагина для Minecraft
Javaican 09.06.2025
За годы существования Minecraft сформировалась сложная экосистема серверов. Оригинальный (ванильный) сервер не поддерживает плагины, поэтому сообщество разработало множество альтернатив. CraftBukkit. . .
|