Я хочу переместить папку с одного диска (например, C) на другой (скажем, D) без изменения дескриптора безопасности. SHFileOperation может перемещать папку, но новая папка на D всегда наследует разрешение от родительской папки. Чтобы не влиять на другие подпапки в той же родительской папке, я не могу изменить родительскую папку, чтобы перестать распространять ее разрешения на своих дочерних.
Я использовал SetSecurityDescriptorControl с SE_DACL_PROTECTED, чтобы отключить наследование при создании папки на C. Кажется, что он не работает, когда папка перемещается в другую строку. Я также попытался установить информацию о безопасности для новой папки на D, удалив старые записи ACE. Тем не менее, эти унаследованные ACE не могут быть удалены.
Существует реестр ForceCopyAclwithFile (http://thedailyreviewer.com/server/view/copy-folder-w-user-permission-intact-10274759), но я не хочу его использовать из-за его глобального воздействия на систему.
Как я могу использовать Windows API для перемещения папок между дисками без изменения разрешения? Что я здесь упустил?
Спасибо
Leon