Как сбросить дескриптор безопасности объекта по умолчанию? - PullRequest
2 голосов
/ 07 октября 2010

В рамках программы тестирования я создаю несколько ключей реестра и применяю к ним определенный дескриптор безопасности. Позже я хочу сбросить его на дескриптор безопасности «по умолчанию» (т. Е. Унаследованный от родителя). Как правильно это сделать?

Я не могу сохранить и восстановить исходный дескриптор безопасности, поскольку эта утилита может запускаться несколько раз, прежде чем тестировщик захочет сбросить ее. Я думаю, я мог бы сохранить его во временном файле или в реестре, но я бы предпочел более элегантное решение.

Итак, я должен что-то делать с дескриптором безопасности родителя или как? Мне трудно понять, что делать.

Почти забыл упомянуть, что я делаю это в C.

ОБНОВЛЕНИЕ: Я должен был добавить, что я буду делать это и с файлами (и, возможно, с другими защищаемыми объектами), поэтому было бы неплохо, если бы существовал общий способ работы с самими дескрипторами безопасности. вместо использования специфичных для объекта вещей, таких как RegSaveKey. Я предполагаю, что это потребовало бы работы с дескриптором безопасности родителя, поэтому было бы здорово, если бы я мог сделать что-то вроде следующего:

BOOL WINAPI GetDefaultChildSecurityDescriptorFromParent(LPSECURITY_DESCRIPTOR Parent, LPSECURITY_DESCRIPTOR* Child);

Я просто не уверен, как это сделать программно. Вы можете сделать это в редакторе дескрипторов безопасности, используя флажок для наследования записей от родителя, так что, очевидно, это как-то возможно.

Ответы [ 3 ]

0 голосов
/ 07 октября 2010

Самый простой способ сделать это - прочитать структуру, которая должна быть принята по умолчанию ... затем удалить ее и воссоздать заново, передав NULL для принудительной установки значений по умолчанию.

0 голосов
/ 08 октября 2010

Я не хочу отвечать на свой вопрос, но я нашел фрагмент документации по этому вопросу (DACL - действительно единственное, что меня интересует).Похоже, мне нужно получить DACL родителя и создать новый DACL, который включает в себя все наследуемые ACE.Я надеялся, что это будет проще, но это не так уж плохо.

0 голосов
/ 07 октября 2010

Я рекомендую сохранять ключи в файл, используя RegSavekey . Для восстановления ключа используйте RegLoadKey .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...