如何在我的程序下次重启之前延迟文件删除?

Arm*_*min 6 delphi delphi-7

我的应用程序需要删除一些文件,但这应该发生,直到下一次启动Windows.

我现在正在做的是在RunOnce注册表项中写入此字符串值:

Command.com /c del c:\some file.ext
Run Code Online (Sandbox Code Playgroud)

但我发现嵌入空间的路径存在问题.我不得不说我也试过这个:

Command.com /c del "c:\some file.ext"
Run Code Online (Sandbox Code Playgroud)

但这并不能解决问题,但最糟糕的是:不管删除任何文件,无论嵌入空间如何!

从我的程序中删除文件延迟到下次重启的正确方法是什么?

谢谢.

Ken*_*ite 28

不要使用RunOnce,也不要使用Command.com.如果你坚持使用某些东西,请%COMSPEC% /c改用.不过,你有更好的选择.

使用带标志的MoveFileExMOVEFILE_DELAY_UNTIL_REBOOT:

if not MoveFileEx(PChar(YourFileToDelete), nil, MOVEFILE_DELAY_UNTIL_REBOOT) then
  SysErrorMessage(GetLastError);
Run Code Online (Sandbox Code Playgroud)

  • Armin,(1)这个问题没有解析.请改写一下.(2)文件和文件夹共享命名空间.文件和具有相同名称的文件夹是不可能的.(3)每个待删除文件分别存储在操作系统选择存储该信息的任何位置,因此您不必担心尝试一次删除太多文件. (4认同)
  • @Armin:1)我所描述的`MoveFileEx`在启动时删除文件.2)如果你要删除一个文件,它就在一个文件夹中,对吗?如果你可以用`RunOnce`来做,你可以用(MoveFileEx`)做(更好).3)你做多个文件,多次调用`MoveFileEx`; 他们一个接一个地被处决.这是我链接的文章. (4认同)