Как мы используем SECURITY_ATTRIBUTES с SHCreateDirectoryEx ()?

Мои требования следующие:

  1. Создание каталога в указанном месте.
  2. Установка его атрибутов так, чтобы папка была «ТОЛЬКО ДЛЯ ЧТЕНИЯ». Другими словами, учетные записи пользователей не должны создавать папку / файл внутри этой папки.

Теперь я могу создать каталог следующим образом:

SHCreateDirectoryEx( NULL, <path>.c_str(), NULL );

Теперь я хотел бы установить соответствующие атрибуты безопасности. Любая помощь / пример кода будет оценен.

Платформа: Win7 (язык: C ++ / C)

1

Решение

Первое, что вы должны сделать, это создать SECURITY_ATTRIBUTES структура и установить его члены.

SECURITY_ATTRIBUTES SecAttr;

SecAttr.size = sizeof(SECURITY_ATTRIBUTES); //Set size of structure

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

Вы не можете напрямую создать эту структуру согласно Документация MSDN, но вы должны использовать функции, представленные в документации, чтобы создать такую ​​структуру, установить все необходимые флаги, как требуется, а затем получить указатель на нее для передачи SecAttr,

Пример того, как создать такой SECURITY_DESCRIPTOR структуру можно найти Вот. В этом примере это сделано для ключа реестра, но принцип тот же.

По сути вы заполняете DACL (Дискреционный список контроля доступа безопасности) или SACL (Список контроля доступа к системе с правильными свойствами доступа (чтение / запись / только чтение) и т. д. вы хотите, чтобы объект имел.

Заполнив весь SECURITY_ATTRIBUTES структура вы можете передать его своему SHCreateDirectoryEx функция.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector