У меня есть система автоматического обновления, которая заменяет мои существующие программные файлы при перезагрузке. (Достаточно сказать, что это очень сложная программа с множеством драйверов, служб и модулей пользовательского уровня. Другого пути действительно нет. Поверьте мне.)
Функция MoveFileEx используется с MOVEFILE_DELAY_UNTIL_REBOOT для настройки замены этого файла. Я нахожу, что это работает просто отлично, нормально. Однако если исходный и целевой файлы находятся на разных дисках, цель удаляется, но источник не перемещается. В результате, когда пользователь устанавливает программное обеспечение на диск, отличный от системного раздела, обновление удаляет файл продукта, а не обновляет его.
Теперь я вижу в документации для MoveFileEx, что MOVEFILE_COPY_ALLOWED следует использовать при перемещении файла с одного тома на другой. Но также говорится, что флаг нельзя использовать с MOVEFILE_DELAY_UNTIL_REBOOT.
В: Как я могу переместить файл при перезагрузке, перезаписав существующий файл, если исходный и целевой файлы не находятся на одном томе?