因为课程需要,需要实现程序运行时删除自身的效果,但是程序运行时是受到系统保护的,所以只能想别的方法 。
  思路是:在本程序未关闭时调用其他程序,使被调用的程序在源程序关闭后删除程序本身。
  使用C#删除自身的exe程序,共有两种方法。
  

  • 方法一:使用bat文件删除程序+自身,但其有临时bat文件生成。

  • 方法二:利用某些dos命令的延时效果,在程序退出之后自动删除程序自身思路非常巧妙。也避免了bat方式,循环删除的问题。当然这种方法从本质上应该和方法一差不多。


方法一:程序中打开新的进程,删掉程序后,再销毁进程本身

  流程:首先生成一个BAT文件,然后让BAT执行删除动作,就是:1、生成删除的BAT2、运行BAT3、快速退出4、BAT开始删除EXE5、BAT删除BAT
/// <summary>/// 删除程序自身(本文地址:http://www.cnblogs.com/Interkey/p/DeleteItself.html)【推荐】/// </summary>private static void DeleteItself(){string vBatFile = Path.GetDirectoryName(Application.ExecutablePath) + "\\DeleteItself.bat";using (StreamWriter vStreamWriter = new StreamWriter(vBatFile, false, Encoding.Default)){vStreamWriter.Write(string.Format(":del\r\n" +" del \"{0}\"\r\n" +"if exist \"{0}\" goto del\r\n" +"del %0\r\n", Application.ExecutablePath));}//************ 执行批处理WinExec(vBatFile, 0);//************ 结束退出Application.Exit();}[System.Runtime.InteropServices.DllImport("kernel32.dll")]public static extern uint WinExec(string lpCmdLine, uint uCmdShow);

方法二:程序中打开新的进程,调用cmd命令,删掉程序即可。

    /// <summary>/// 删除程序自身(本文地址:http://www.cnblogs.com/Interkey/p/DeleteItself.html)/// </summary>private static void DeleteItselfByCMD(){ProcessStartInfo psi = new ProcessStartInfo("cmd.exe", "/C ping 1.1.1.1 -n 1 -w 1000 > Nul & Del " + Application.ExecutablePath);psi.WindowStyle = ProcessWindowStyle.Hidden;psi.CreateNoWindow = true;Process.Start(psi);Application.Exit();}
这些命令的意思是:
cmd /c 调用命令窗口执行dos指令ping 1.1.1.1 -n 1 -w 1000 > Nul 利用 ping命令的 –w 参数指定延时1秒执行& 连接下一个命令(用于一行执行多个命令)Del <Application.ExecutablePath> 删除可执行文件

程序实例:

下载:http://download.csdn.net/detail/acingdreamer/9757359

C#实现删除自身程序相关推荐

  1. dotnet 删除自身程序的方法

    本文告诉大家一个逗比方法可以用来删除程序自身 我写了一个逗比 WPF 程序,这个程序会做邪恶的事情,会假装成小伙伴的桌面,然后小伙伴以为是桌面,接着打开任何程序都是在逗他的, 所以我期望在程序运行完成 ...

  2. python删除自身程序

    为了实现python程序的自删功能查了很多资料,最终使用了这个方案 代码部分 def run_batch_file(file_path): # 执行bat文件函数Popen(file_path, cr ...

  3. 编程精粹 --Microsoft编写优质无错C程序秘诀

    献给我的妻子Beth, 以及我的双亲Joseph和Julia Maguire ────为了他们的爱和支持 序 1986年,在为几家小公司咨询和工作了10年之后为了获得编写Macintosh应用程序的经 ...

  4. XP中CPU占用率100%原因及解决方法

    我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看"任务管理器"才发现CPU占用达到100%.这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在 ...

  5. {电脑救助站}常用知识1 来自常用知识( 网络安全中起重大作用的 Windows 命令)

    常用知识( 网络安全中起重大作用的 Windows 命令) 常用在线查毒链接 3 楼       超级兔子的在线检测功能 4楼       准确探索间谍软件或广告软件 5楼         预防间谍软 ...

  6. CPU占用率百分百原因及解决方法

    我们在使用Windows XP操作系统的时候,用着用着系统就变慢了,一看"任务管理器"才发现CPU占用达到100%.这是怎么回事情呢?遇到病毒了,硬件有问题,还是系统设置有问题,在 ...

  7. windows系统各进程详解

    系统各进程详解 下面列出的都是操作系统的进程,而不是程序的进程,记住这些进程并了解他们的工作原理,用途,能让我们对系统进程的理解提升一个级别. system Idle Process系统进程介绍 al ...

  8. 多方收集的Winodws Xp相关技术文章

    原帖http://bbs.pop863.net.cn/viewthread.php?tid=584&highlight= 如何恢复WinXP系统的输入法浮条 在Win2000/XP下,最痛苦的 ...

  9. 利用python通过cmd指令对文件进行删除

    由于自己编写的软件是用python写的,考虑安全问题,我突然想到如果软件只被允许使用一次,又该如何实现软件在使用一次之后,便自动销毁.带着这个问题,我开始了网上的查阅. 在几经查阅之后,想要利用pyt ...

最新文章

  1. 人脸对齐--Face Alignment In-the-Wild: A Survey
  2. Java swing实现Visio中对直线、曲线、折线的画及拖动删除
  3. Linux内核分析作业第二周
  4. 【开发环境】Windows 中安装 Python 各个版本 ( 下载 Python 各版本 SDK | 安装 Python )
  5. Unity3D:创建对象
  6. 为什么你的应用程序需要崩溃
  7. 某考试 T2 Tree
  8. 一年中重要的节日列表_外贸干货 | 关于节日祝福与安排
  9. Node聊天程序实例04:chat_ui.js
  10. linux自动备份mysql数据库,并删除几天前数据库备份
  11. python报错记录No.1
  12. 计算机网络工程师模拟题库,网络工程师模拟试题
  13. notes for 电子技术技术(模拟部分) 康华光
  14. 5S管理跟精益生产的关系是什么?如何使5S管理有效落地?
  15. Sigfox的物联网生意经:弱水三千只取一瓢饮
  16. 1039:判断数正负(测试已通过)
  17. php中的数据库操作和字符串操作session与cookie操作,php中的数据库操作和字符串操作session与cookie操作...
  18. A40I构建编译应用程序的SDK环境
  19. 用Hadoop分析金庸人物关系网-实验报告
  20. 【linux】posix是什么都不知道,还好意思说你懂Linux?

热门文章

  1. Python+Selenium 实现新理念外语网络教学平台 自动答英语听力 -- 山东科技大学
  2. 学习emwin,理解emwin,应用emwin
  3. 前端ios和安卓的兼容性问题
  4. 数字图像处理第九章——形态学图像处理
  5. 创建类MyMath,计算圆的周长、面积和球的表面积、体积,结果保留两位小数。若输入的是非数字,则输出:请输入数字!提示:要引入math包。
  6. ElaticSearch学习笔记
  7. 粗读《Python 深度学习》(7)
  8. 用.et文件恢复.XLSX表格
  9. Java开源Android开源项目
  10. 面试文员计算机水平考题,文员面试的考题主要有那些?