製品を更新する Windows サービスがあります。製品ファイルを一時ディレクトリ (通常は「C:\Windows\Temp」) にコピーし、バイナリにパッチを適用してから、再起動時に MoveFileEx を使用してファイルをインストール ディレクトリ (通常は「C:\Program Files\Product」) にコピーします。 "。インストール ディレクトリ内のファイルは、親フォルダからセキュリティ属性を継承しています。コピー、パッチ適用、および再起動後、インストール ディレクトリ内のファイルに一部の ACL がありません。具体的には、ファイルにはユーザー グループの ACL がないため、ユーザーは再起動後にプログラムを実行できなくなります。
ここで何が起こっているのか誰か説明できますか? インストール ディレクトリから一時ディレクトリにコピーすると、ファイルは一時ディレクトリの ACL を継承するようです。ただし、MoveFileEx/Reboot では、ファイルは、インストール ディレクトリと一時ディレクトリの両方に共通する ACL のみを継承します。