如何使C#应用程序自身擦除(自毁)?我认为可能有两种方法:
这两种方法似乎都是无效的。我感觉Windows中有一些内置的标记或某些东西允许这种东西。我该怎么办?另外,你可以提供一些示例代码吗?
更新:感谢你的所有回答!我将尝试它们,看看能带给我什么。
首先,有人问我为什么要我的应用程序执行此操作。答案是这样的:几天前,我阅读了Joel Spolsky在他的博客上发布的Project Aardvark规范,其中提到客户端应用程序将在远程会话后自行删除。我想知道这是如何工作的,以及如果需要的话,如何才能实现这样的壮举。
以下是有关建议的一些概述:
正如评论中所概述的,这两种方法当然都有其缺点。
但是,下面概述的这种方法行得通吗?
有两个可执行文件:Program.exe和Cleaner.exe。前者是程序本身,后者是删除Program.exe及其本身的应用程序(如果将其加载到内存中,正如我将要解释的那样)。Program.exe(具有依赖项)是否可以将不具有任何依赖项的Cleaner.exe全部加载到内存中并运行它?
如果可以,Cleaner.exe是否可以打包在Program.exe中,加载到内存中并运行?
有一个MoveFileEx API,当给出一个MOVEFILE_DELAY_UNTIL_REBOOT
标志时,它将在下次系统启动时删除指定的文件。
用户能否干预并防止这种情况在下次重新启动之前发生?
@FWFD:是的,很容易。他们还可以删除适当的注册表项(这是在下次重新引导时删除该文件的说明的存储位置)。