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