Max*_*sky 23 .net c# windows self-destruction delete-file
如何让我的C#app擦除自身(自毁)?以下是我认为可行的两种方式:
这两种方法似乎效率低下.我觉得有一些内置的标志或Windows中允许这样的东西.我该怎么办?另外,您能提供一些示例代码吗?
更新:感谢您的所有答案!我要去尝试一下,看看能给我带来什么.
首先,有些人问我为什么要我的应用程序这样做.这就是答案:几天前,我读了Joel Spolsky在他的博客上发布的Project Aardvark规范,并提到客户端应用程序会在远程会话后删除自己.我想知道它是如何工作的,以及如果我需要这样做,我可以完成这样的壮举.
以下是对建议内容的一点概述:
当然,这些都有其缺点,如评论中所述.
但是,下面概述的这种方法是否有效?
有两个可执行文件:Program.exe和Cleaner.exe.前者是程序本身,后者是删除Program.exe及其自身的应用程序(如果它被加载到内存中,我将要解释).Program.exe(具有依赖关系)是否可以将所有没有任何依赖关系的Cleaner.exe 加载到内存中并运行它?
如果可以,可以将Cleaner.exe打包到Program.exe中,加载到内存中,然后运行?
Ant*_*lev 19
有一个MoveFileEx API,当给出一个MOVEFILE_DELAY_UNTIL_REBOOT标志时,它将在下次系统启动时删除指定的文件.
Bob*_*bby 10
关于这个主题有一篇很棒的CodeProject文章.
编辑:基本上它是一个简单的cmd调用,它会在几秒钟后删除指定的文件.
Process.Start("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del " + Application.ExecutablePath);
Application.Exit();
Run Code Online (Sandbox Code Playgroud)
只要您需要在机器上存在物理存在,您将永远无法保证这将起作用.例如:
如果您的应用程序需要此级别的安全性,请考虑将其托管在您控制的计算机上(例如,通过提供Web服务并让存根客户端以这种方式访问它).
在某种程度上相关的说明中,人们也倾向于推测某人的动机(1)需要在某人的机器上进行实体存在,以及(2)想要删除应用程序存在的证据.
| 归档时间: |
|
| 查看次数: |
13045 次 |
| 最近记录: |