У меня есть служба Windows, которая обновляет наш продукт. Он копирует файлы продукта во временный каталог, обычно «C:\Windows\Temp», исправляет двоичные файлы, а затем использует MoveFileEx для копирования файлов обратно в каталог установки при перезагрузке, обычно «C:\Program Files\Product». ". Файлы в каталоге установки наследуют свои атрибуты безопасности из родительской папки. После копирования, исправления и перезагрузки в файлах в каталоге установки отсутствуют некоторые ACL. В частности, файлы больше не имеют ACL для группы «Пользователи», поэтому пользователи больше не могут запускать программу после перезагрузки.
Кто-нибудь может объяснить, что здесь происходит? Похоже, что при копировании из каталога установки во временный каталог файлы наследуют ACL временного каталога. Однако в MoveFileEx/Reboot файлы наследуют только те ACL, которые являются общими как для каталогов установки, так и для временных каталогов.