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