我需要关闭我的应用程序然后删除可执行文件。我是通过启动低优先级批处理作业然后立即关闭exe来完成的。还有更好的方法吗?
答案 0 :(得分:2)
来自MoveFile的PendMoves和sysinternals实用程序。根据文档,您可以通过指定空目标来使用movefile在下次启动时删除文件:
movefile your.exe ""
此实用程序通常用于删除顽固的恶意软件,但我不确定它会在关闭后或仅在下次重新启动时立即删除它。
该实用程序使用MoveFileEx API,因此如果您愿意,可以使用该API来达到同样的效果。
答案 1 :(得分:2)
只要您不在Windows 95/98 / ME上,我就会运行MoveFileEx(我希望不会......)。但是,您无法删除您的exe所在的文件夹。如果这不是问题,请按照Ryan的建议。
这article基本上记录了你想做的事情。
答案 2 :(得分:1)
只要可执行文件中的任何代码都在内存中,就无法删除,但您可以尝试其他一些内容:
MoveFileEx
将删除推迟到下次重启是安装/卸载代码通常使用的一种方法。cmd.exe /c del c:\path\myprog.exe
从现在开始运行60秒,然后立即退出,以便有机会成功。如果您使用批处理文件方法,请考虑以下内容:
:loop
ping -n 6 127.0.0.1
del /y %1
if exist %1 goto :loop
del byebye.bat
此处的ping
命令被滥用以插入延迟,因为sleep
不是Windows上的标准命令。循环使批处理能够等待它实际删除可执行文件的时间。
答案 3 :(得分:0)
可能的方法
启动一个脚本以在退出时删除该应用程序,尽管这可能会使脚本处于遗留状态
使用RunOnce密钥在下次机器重新启动时删除可执行文件,我认为它也适用于登录和注销,但我不确定。