首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重新启动时MoveFileEx()文件删除

重新启动时MoveFileEx()文件删除
EN

Stack Overflow用户
提问于 2015-06-19 13:36:20
回答 2查看 2.1K关注 0票数 0

当前,我可以在重新启动时删除一个目录。我目前通过使用MoveFileEx函数和传递MOVEFILE_DELAY_UNTIL_REBOOT常量来实现这一点。

我的问题是,我是否有以下问题:

目录1里面有目录2..。目录2是不固定的,这意味着需要删除目录1,但由于目录1中只有一个目录,这意味着我只需要删除目录1,而目录1又将删除目录2。但是,在我在重新启动时将目录1标记为要删除的目录1之后,另一个目录已经安装到目录1中,称为目录3。在这种情况下,应该删除目录2,因为我们不习惯删除目录3。

我想知道是否有任何条件变量/常量可以在这种情况下有所帮助?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-19 15:01:33

答案是,如果一个目录或文件没有被标记为要删除,那么它所在的目录就不会被删除。(正如IInspectable所指出的)

“只有当目录为空时,系统才会删除标记为MOVEFILE_DELAY_UNTIL_REBOOT标志的目录。”

票数 0
EN

Stack Overflow用户

发布于 2015-06-19 15:49:04

但是,在我在重新启动时将目录1标记为要删除之后,另一个目录已经安装到目录1中,称为目录3。在这种情况下,应该只删除目录2,因为我们不习惯删除目录3。

没有API来“取消”已标记为在重新启动时删除的文件/目录。您必须直接更新注册表以从列表中删除项。 documentation告诉您使用了哪个注册表键:

函数将重新启动时要重命名的文件的位置存储在以下注册表值中: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations 此注册表值为REG_MULTI_SZ类型。每个重命名操作存储下列以空结尾的字符串之一,具体取决于重命名是否为delete:

  • szDstFile\0\0
  • szSrcFile\0szDstFile\0

字符串szDstFile\0\0表示文件szDstFile将在重新启动时被删除。字符串szSrcFile\0szDstFile\0表示szSrcFile将在重新启动时被重命名为szDstFile。

另一方面,文件还说:

只有在MOVEFILE_DELAY_UNTIL_REBOOT标志为空的情况下,系统才删除标记为删除的目录。若要确保删除目录,请在尝试删除目录之前移动或删除目录中的所有文件。文件在启动时可能在目录中,但必须删除或移动它们,系统才能删除该目录。

但那只是提到文件,而不是子目录。

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

https://stackoverflow.com/questions/30939579

复制
相关文章

相似问题

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