我的应用程序需要删除一些文件,但这应该发生在下一次启动Windows。
我现在正在做的是在RunOnce注册表项中编写此字符串值:
Command.com /c del c:\some file.ext
但是我发现嵌入空格的路径存在问题。我不得不说我也试过这个:
Command.com /c del "c:\some file.ext"
但这并不能解决问题,但最糟糕的是:不管删除任何文件,无论嵌入的空间如何!
从我的程序中删除文件的正确方法是什么延迟到下次重启?
感谢。
答案 0 :(得分:28)
请勿使用RunOnce
,也不要使用Command.com
。如果您坚持使用某些内容,请改用%COMSPEC% /c
。不过,你有更好的选择。
使用MoveFileEx代替MOVEFILE_DELAY_UNTIL_REBOOT
标志:
if not MoveFileEx(PChar(YourFileToDelete), nil, MOVEFILE_DELAY_UNTIL_REBOOT) then
SysErrorMessage(GetLastError);
答案 1 :(得分:2)
请改用cmd.exe。这是自Windows NT以来的“新”命令提示符。
cmd.exe /c del "c:\some file.ext"
答案 2 :(得分:1)
只是一个猜测:看起来你正在运行仅使用短文件名的“DOS”command.com。如果您使用的是Win2K及更高版本,请使用cmd.exe而不是command.com,是的,请使用双引号。