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