删除窗口中正在运行的文件

Delete running file in windows

本文关键字:运行 文件 窗口 删除      更新时间:2023-10-16

我写了一些安装程序/卸载程序软件。在我的 Uninst 程序中,我需要删除目录中的所有文件和 self 文件。如何在窗口中实现这一点?正在运行的文件被阻止

这不是一个真正的Qt问题,而是更直接的Windows。与 Linux 和 OSX 不同,正如您所发现的,您正在运行的文件是锁定的,因此您无法在运行时删除它。

不过,您可以做的是使用 RunOnce 注册表项在用户登录时单独运行一次程序,这将为您执行文件的最终删除。如文档中所述,RunOnce 条目在运行之前被删除,因此它按预期执行。

无法删除 Windows 中当前保持打开状态的文件(可执行文件由操作系统本身保持打开状态)。大多数应用程序解决此问题的方法是使用安装程序框架,然后有一个"启动时"处理程序来清理最后的余数。

一个技巧是使用批处理文件进行最终清理;允许批处理文件自行删除。这是因为在这种情况下,实际的可执行文件是CMD.EXE,不需要删除。