【问题标题】:How does Windows remove locked files in the next reboot when you uninstall a program?当您卸载程序时,Windows 如何在下次重新启动时删除锁定的文件?
【发布时间】:2014-02-08 02:06:26
【问题描述】:

当您卸载程序时,Windows 如何在下次重新启动时删除锁定的文件?也许有某种预定的过程?

【问题讨论】:

    标签: windows delete-file filelock


    【解决方案1】:

    卸载过程使用MoveFileEx 并设置了MOVEFILE_DELAY_UNTIL_REBOOT 标志,这表明该操作在重新启动之前不应发生。将lpNewFileName 参数留空表示应该删除该文件:

    如果 dwFlags 指定 MOVEFILE_DELAY_UNTIL_REBOOT 并且 lpNewFileName 为 NULL,则 MoveFileEx 注册 lpExistingFileName 文件以在系统重新启动时删除。如果 lpExistingFileName 引用了一个目录,只有当目录为空时系统才会在重启时删除该目录。

    MOVEFILE_DELAY_UNTIL_REBOOT 上的信息说:

    MOVEFILE_DELAY_UNTIL_REBOOT

    在重新启动操作系统之前,系统不会移动文件。系统在执行 AUTOCHK 后立即移动文件,但在创建任何分页文件之前。因此,该参数使函数能够从以前的启动中删除分页文件

    上面的函数向注册表写入一个在启动时自动处理的条目:

    该函数将重新启动时要重命名的文件的位置存储在以下注册表值中:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations

    【讨论】:

    • 那是在桌面和服务器上。 Windows CE 和 Windows Mobile 没有 API 或行为。 (由于医疗领域和围绕设备的认证过程,Windows CE 仍然很受欢迎)。我不确定Windows Phone,因为我从未遇到过。
    • @noloader:CE 和 Mobile 是否有卸载程序会延迟文件删除,直到设备重新启动?我承认我目前没有 CE 或 Windows Mobile 设备,但我从未见过将文件删除推迟到重新启动的设备。如果从不需要它,那就可以解释为什么它在这些平台上不存在。
    猜你喜欢
    • 1970-01-01
    • 2010-09-22
    • 1970-01-01
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2020-09-09
    相关资源
    最近更新 更多