「ブートセッションID」または(信頼できる)「ブートタイムスタンプ」はありますか?インストールの場合、スケジュールされた再起動が実際に行われたことを検出する必要があります。
MoveFileEx()
でダミーができると思いますが、MOVEFILE_DELAY_UNTIL_REBOOT
もっと簡単なことを期待していました。
(修理/更新後に不規則に動作することがあるサードパーティのパッケージをインストールする必要があります。その状態では、デバイスにアクセスするとシステムがロックされる可能性があります)
(Windows XP、Vista、7)