什么是关闭.Net winforms应用程序并删除可执行文件的最佳方法

时间:2009-02-11 05:19:12

标签: c# .net winforms shutdown

我需要关闭我的应用程序然后删除可执行文件。我是通过启动低优先级批处理作业然后立即关闭exe来完成的。还有更好的方法吗?

4 个答案:

答案 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将删除推迟到下次重启是安装/卸载代码通常使用的一种方法。
  • 使用Task Scheduler安排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)

可能的方法

  1. 启动一个脚本以在退出时删除该应用程序,尽管这可能会使脚本处于遗留状态

  2. 使用RunOnce密钥在下次机器重新启动时删除可执行文件,我认为它也适用于登录和注销,但我不确定。