c# - 自删除 C# 应用程序

标签 c# .net

<分区>

各位开发者大家好,

现在,在我的一个创造性失眠 session 期间,我在学习 C# 的同时从事我的一个项目,我碰巧想知道 - 有没有办法创建一个 self 删除的应用程序?

现在,请不要将我误认为是懒得做研究的人。我自己做了一些实验(好吧,实际上并没有太多实验,因为 File.functionality 似乎无法完成这样的任务 - 不足为奇,Windows 在删除正在运行的应用程序时相当不情愿) .

我做了一些研究,结果证明我的一些担心是真的——这样的功能需要执行命令行进程或 MOVEFILE_DELAY_UNTIL_REBOOT 标志。第二个选项绝对没有问题,而第一个选项仍然有些困惑。因此我很好奇 - 是否有任何更有经验的 CSharp 开发人员在这里找到另一种方法来做到这一点? (从理论上讲,这听起来确实不可能。但如果我低估其他开发人员,那就太愚蠢了)

最佳答案

可能的方法...未测试...

还有一个FILE_FLAG_DELETE_ON_CLOSE您可以考虑使用的 CreateFile 标志。

  • 创建带有此标志的临时文件并将您的可执行文件复制到那里。
  • 从该位置开始第二个实例并将路径作为参数传递到自己的位置
  • 第二个实例启动后(为了学习目的需要一些同步或基本的 sleep )
  • 在新实例中删除第一个文件(可以重试直到第一个实例退出)并退出。

此时第二个文件应该没有句柄,也将被操作系统删除。

关于c# - 自删除 C# 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18668910/

相关文章:

c# - 为什么我不能安装我的服务(运行时比加载的运行时更新)?

c# - 获取 C# 中的 XSD 元素列表

.net - PowerShell:.NET 方法调用的性能

c# - 串口通信问题

.net - Reload() 不更新 EF 实体

.net - 为什么在 dotnetnuke 中启用复合文件时 SVG 背景图像会中断?

C# static void Main 不应该公开?

c# - 扩展方法和类型推断

c# - 使用 iTextSharp 将 pdf 显示到网页?

java - 用于高度安全的Web应用程序的工具和技术