本帖最后由 NT5763 于 2010-11-19 23:44:08 编辑

解决方案 »

  1.   


    var exefile = Environment.GetCommandLineArgs()[0];
    var bat = "ping 1.1.1.1 /n 3 /w 1000 > nul\n";
    bat += "del " + exefile + "\n";
    bat += @"del d:\suicide.bat";
    File.WriteAllText(@"d:\suicide.bat", bat);
    Process.Start(@"d:\suicide.bat");
    Environment.Exit(0);
      

  2.   

    ls的基础上。修改为循环判断程序是否可以被删除。用
    del exefile
    然后判断if errorlevel 1 then ...
    的方式循环判断直到删除后再删除自己比较合理。延时效果不好。要么时间太长,要么时间太短,无法控制。
      

  3.   

    ls的基础上。修改为循环判断程序是否可以被删除。用
    del exefile
    然后判断if errorlevel 1 then ...
    的方式循环判断直到删除后再删除自己比较合理。延时效果不好。要么时间太长,要么时间太短,无法控制。
      

  4.   

            public static void TestForKillMyself()
            {
                string bat = @"@echo off
    :tryagain
    del %1
    if exist %1 goto tryagain
    del %0";
                File.WriteAllText("killme.bat", bat);//写bat文件
                ProcessStartInfo psi = new ProcessStartInfo();
                psi.FileName = "killme.bat";
                psi.Arguments = "\"" + Environment.GetCommandLineArgs()[0] + "\"";
                psi.WindowStyle = ProcessWindowStyle.Hidden;
                Process.Start(psi);
            }
      

  5.   

    var exefile = Environment.GetCommandLineArgs()[0];
    var bat = "ping 1.1.1.1 /n 3 /w 1000 > nul\n";
    bat += "del " + exefile + "\n";
    bat += @"del d:\suicide.bat";
    File.WriteAllText(@"d:\suicide.bat", bat);
    Process.Start(@"d:\suicide.bat");
    Environment.Exit(0);
      

  6.   

    以前实现过,好像是用bat实现的,具体不太清楚。
      

  7.   

    很简单,分为四部1、主程序执行的时候,调用fileStream 在磁盘上写出一个新的执行文件,这个执行文件可以当成资源文件嵌入到主程序中。2、主程序通过进程管理启动这个新生成的执行文件。3、主程序和新进程之间通讯,这个方法就太多了,比方说socket4、主程序退出,新进程删除主程序。
      

  8.   

    说下思路吧
    1.首先获取程序的路径,格式化个删除的命令 cmd.exe /c del 文件名
    2.用CreateProcess来创建子进程,也就是cmd.exe
    3.提升进程的执行优先级
    4.让cmd.exe带参数执行,也就是先前格式化出来的那个