我有一个更新我们产品的 Windows 服务。它将产品文件复制到临时目录,通常是“C:\Windows\Temp”,修补二进制文件,然后在重新启动时使用 MoveFileEx 将文件复制回安装目录,通常是“C:\Program Files\Product ”。安装目录中的文件从父文件夹继承其安全属性。复制、修补和重新启动后,安装目录中的文件缺少一些 ACL。具体来说,这些文件不再具有用户组的 ACL,因此用户在重新启动后无法再运行该程序。
谁能解释这里发生了什么?似乎从安装目录复制到临时目录,文件继承了临时目录的 ACL。但是,在 MoveFileEx/Reboot 上,文件仅继承 install 和 temp 目录共有的 ACL。