gpt4 book ai didi

winapi - 带有 MOVEFILE_DELAY_UNTIL_REBOOT 的 MoveFileEx 删除而不是移动

转载 作者:行者123 更新时间:2023-12-01 04:22:01 29 4
gpt4 key购买 nike

我有一个自动更新系统,可以在重新启动时替换我现有的程序文件。 (可以说,这是一个非常复杂的程序,包含许多驱动程序、服务和用户级模块。真的没有其他办法。相信我。)

函数 MoveFileEx 与 MOVEFILE_DELAY_UNTIL_REBOOT 一起使用来设置此文件替换。我发现它正常工作。但是,如果源文件和目标文件位于不同的驱动器上,则会删除目标文件但不会移动源文件。结果是当用户在不同于系统分区的驱动器上安装软件时,更新会删除产品文件而不是更新它们。

现在,我在 MoveFileEx 的文档中看到 MOVEFILE_COPY_ALLOWED 应该在将文件从一个卷移动到另一个卷时使用。但它也表示该标志不能与 MOVEFILE_DELAY_UNTIL_REBOOT 一起使用。

问:当源和目标不在同一个卷上时,如何在重新启动时移动文件,覆盖现有文件?

最佳答案

为什么不直接将文件复制到用户安装程序的驱动器?

据我所知,仅依靠此功能没有直接的方法可以做您想做的事情。

在同一个驱动器上查找可写位置在 Vista 上可能是个问题,但您提到您有服务 - 如果它们以 LocalSystem 特权运行,则让它们写入新文件。

我使用的另一种简单的更新机制(虽然不适用于驱动程序)是拥有专用的更新程序 - 杀死/结束所有内容,让更新程序完成它的工作并重新启动所有内容。

关于winapi - 带有 MOVEFILE_DELAY_UNTIL_REBOOT 的 MoveFileEx 删除而不是移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1013689/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com