【发布时间】:2010-02-11 14:49:39
【问题描述】:
如何让我的 C# 应用程序自行擦除(自毁)?以下是我认为可能有效的两种方法:
- 提供另一个删除主程序的程序。那么这个删除程序是如何被删除的呢?
- 为 CMD 创建一个进程,等待几秒钟然后删除您的文件。在这几秒钟内,您关闭了应用程序。
这两种方法似乎都效率低下。我有一种感觉,Windows 中有一些内置标志或其他东西允许这些东西。我该怎么做?另外,你能提供一些示例代码吗?
更新:感谢您的所有回答!我要试一试,看看能有什么用处。
首先,有些人问我为什么要让我的应用程序这样做。答案如下:几天前,我阅读了 Joel Spolsky 在他的博客上发布的 Project Aardvark 规范,其中提到客户端应用程序将在远程会话后自行删除。我想知道这是如何工作的,以及如果我需要这样做,我如何才能完成这样的壮举。
以下是对建议内容的简要概述:
- 创建一个注册表项,告诉 Windows 在重新启动时删除文件
- 使用 ping 命令启动 CMD 等待几秒钟,然后删除文件
当然,正如 cmets 中所述,这两者都有其缺点。
但是,下面概述的这种方法可行吗?
有两个可执行文件:Program.exe 和 Cleaner.exe。前者是程序本身,后者是删除 Program.exe 及其本身的应用程序(如果它被加载到内存中,正如我即将解释的那样)。 Program.exe(有依赖关系)是否可以加载所有没有任何依赖关系的 Cleaner.exe,到内存中并运行它? p>
如果可以的话,是否可以将 Cleaner.exe 打包到 Program.exe 中,加载到内存中并运行?
【问题讨论】:
-
您真的需要删除程序还是直接禁用它?我只是想看看我是否完全理解业务逻辑,因为通常完全禁用某些东西比删除更安全。
-
为什么需要这样做?听起来这个应用程序不好,你需要摆脱证据。
-
@Bobby:做最可疑的事情几乎总是有正当的理由。但出于大多数正当理由,通常有更好的、不那么可疑的方法来完成同样的事情。
-
为什么不加载到内存中执行呢?
-
对于所有想知道我为什么要问这个问题的人,答案如下:昨天,我阅读了 Joel Spolsky 在他的博客上发布的 Aardvark 项目规范,其中提到客户端应用程序会远程会话后删除自身。我想知道这是如何工作的,如果我需要这样做,我如何才能完成这样的壮举。
标签: c# .net windows delete-file self-destruction