自删除 C# 应用程序
本文关键字:应用程序 删除 | 更新日期: 2023-09-27 18:30:26
各位开发人员,大家好,
现在,在我的一次创造性失眠课程中,我一直在学习 C# 时从事我的一个项目,我碰巧想知道 - 有没有办法创建一个自删除应用程序?
现在,不要把我误认为是一个懒得做研究的人。我已经做了一些我自己的实验(嗯,真的没有太多的实验,因为File.功能似乎不能完成这样的任务 - 这并不奇怪,Windows在删除正在运行的应用程序时相当不情愿)。
我做了一些研究,结果证明我的一些担忧是真的 - 这样的功能需要执行命令行进程或MOVEFILE_DELAY_UNTIL_REBOOT标志。第二种选择绝对没有问题,而第一种选择仍然有些混乱。因此,我只是好奇 - 这里有任何更有经验的 CSharp 开发人员找到另一种方法吗?(从理论上讲,这听起来确实是不可能的。但是如果低估其他开发人员,那将是愚蠢的)
可能的方法...未测试...
还有另一个FILE_FLAG_DELETE_ON_CLOSE CreateFile
旗,您可以考虑玩。
- 使用此标志创建临时文件,并将可执行文件复制到其中。
- 从该位置启动第二个实例,并将路径作为参数传递给自己的位置
- 第二个实例启动后(需要一些同步或基本
Sleep
才能进行挖掘) - 在新实例中,删除第一个文件(可以重试直到第一个实例退出)并退出。
此时,第二个文件应该没有句柄,操作系统也会删除它。
你的问题已经在这里问了。
您可以使用 MoveFileEx API 执行此操作,该 API 为您提供MOVEFILE_DELAY_UNTIL_REBOOT标志,该标志将在下次系统启动时删除您想要的内容。