首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MOVEFILE_DELAY_UNTIL_REBOOT删除而不是移动的MoveFileEx

使用MOVEFILE_DELAY_UNTIL_REBOOT删除而不是移动的MoveFileEx
EN

Stack Overflow用户
提问于 2009-06-18 16:23:21
回答 1查看 2.2K关注 0票数 4

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

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-06-18 16:30:33

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

据我所知,没有直接的方法可以只依靠这个函数来做你想做的事情。

在同一个驱动器上找到可写的位置可能是一个问题,但你提到你有服务-如果他们以LocalSystem权限运行,让他们写新文件。

我使用的另一个简单的更新机制(虽然不适用于驱动程序)是有专门的更新程序- kill/end everything,让更新程序完成它的工作,然后重新启动所有东西。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1013689

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档