如何以编程方式自行删除?(C#WinMobile)

Chr*_*ian 6 c# windows-mobile

我如何以编程方式自行删除?

C#/ .NET Compact Framework 2/Windows Mobile 6

拜托,我不想讨论为什么这样做,我只需要知道怎么做!

重要:

  • "第二次申请"方法不是一种选择.(除非第二个应用程序可以从正在运行的应用程序"提取",但我不知道该怎么做!).

  • 强制重启没问题,如果windows在启动时做了伎俩.(有可能吗?很好!告诉我如何!).

  • 欢迎使用代码示例.

cta*_*cke 6

我可以想到的唯一方法是删除自己并且不留痕迹的是使用设备中已存在的东西 - 即wceload(CAB提取器).我创建了一个简单的CAB文件,其中包含一个自定义安装程序DLL,它执行等待然后删除.

然后我将CAB作为嵌入式资源添加到应用程序中.当你需要删除你

  1. 将CAB解压缩到文件系统
  2. 使用CAB作为参数和/ noui(或/ silent)执行wceload.exe
  3. 退出您的申请

然后,CAB会删除您的文件(命名的互斥锁可以比DLL中的Sleep调用更好地同步).wceload会自动删除CAB(完全取决于WinMo版本,但如果需要,还有一个强制删除的开关).

它肯定是一个黑客,但它会提供一个"不留痕迹"删除.当然,CAB可能也必须清理它自己的安装注册表项.也许你可以让安装返回"失败",以防止它们首先被写入.


Joe*_*orn 1

我过去通过简单地将批处理文件写入文件系统来完成此操作,该文件将等待几秒钟,然后删除程序。然后,您可以使用Process.Start()启动批处理文件并立即调用Environment.Exit(). 您需要确保批处理文件等待足够长的时间以便程序关闭,否则它将无法工作。

  • 除了 Windows Mobile 不支持批处理文件...无论您写出什么文件,都会留下痕迹。 (2认同)