В рамках программы тестирования я создаю несколько ключей реестра и применяю к ним определенный дескриптор безопасности. Позже я хочу сбросить его на дескриптор безопасности «по умолчанию» (т. Е. Унаследованный от родителя). Как правильно это сделать?
Я не могу сохранить и восстановить исходный дескриптор безопасности, поскольку эта утилита может запускаться несколько раз, прежде чем тестировщик захочет сбросить ее. Я думаю, я мог бы сохранить его во временном файле или в реестре, но я бы предпочел более элегантное решение.
Итак, я должен что-то делать с дескриптором безопасности родителя или как? Мне трудно понять, что делать.
Почти забыл упомянуть, что я делаю это в C.
ОБНОВЛЕНИЕ: Я должен был добавить, что я буду делать это и с файлами (и, возможно, с другими защищаемыми объектами), поэтому было бы неплохо, если бы существовал общий способ работы с самими дескрипторами безопасности. вместо использования специфичных для объекта вещей, таких как RegSaveKey. Я предполагаю, что это потребовало бы работы с дескриптором безопасности родителя, поэтому было бы здорово, если бы я мог сделать что-то вроде следующего:
BOOL WINAPI GetDefaultChildSecurityDescriptorFromParent(LPSECURITY_DESCRIPTOR Parent, LPSECURITY_DESCRIPTOR* Child);
Я просто не уверен, как это сделать программно. Вы можете сделать это в редакторе дескрипторов безопасности, используя флажок для наследования записей от родителя, так что, очевидно, это как-то возможно.