Windows/C++Сброс защиты файлов наследовать после операции
MoveFile() ищет некоторые рекомендации о том, как сбросить атрибуты безопасности на файл после того, как он был перемещен в новую папку.
Наш стандартный способ создания файлов (и загрузки с сервера) состоит в том, чтобы создать файл во временной папке, а затем, когда поток файлов опущен, файл добавляется. Как только загрузка будет завершена, мы переместим файл в конечный пункт назначения.
MoveFile() передаст безопасность в файл при перемещении файла. В определенной конфигурации это вызывает проблему, когда значения по умолчанию для конечной папки по умолчанию не соответствуют исходной папке. Мы не можем возиться с безопасностью папок.
Итак, в конечном счете, я хотел бы выполнить операцию над файлом после его перемещения. Мое настоящее мышление заключается в том, что я должен получить атрибуты безопасности папки, в которую она входит, а затем применить к файлу после завершения перемещения.
'SE_SECURITY_NAME' требуется только в том случае, если вы меняете SACL. В этом случае мы только меняем DACL, поэтому он не нужен. Однако вам понадобятся либо соответствующие разрешения на уровне файлов, либо 'SE_RESTORE_NAME'. –
@HarryJohnston, Обновлено, спасибо. –
Возможно, стоит отметить, что при использовании этого метода ':: SetNamedSecurityInfo' не возвращает ERROR_SUCCESS. Кажется, что всегда возвращается 1008 (0x3f0): «Была сделана попытка ссылаться на токен, которого не существует». Кажется, все работает нормально. (Это было проверено на Win 7 SP1 x64.) –