2010-10-06 3 views
2

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

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

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

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

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

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

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

ответ

0

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

0

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

0

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

Смежные вопросы