winform总结3> 有趣的bat/winform程序完成自己的任务,然后把自己删除

在winform的开发过程中往往会有这样的应用场景,执行完成某任务之后,程序需要把本身删除掉。比如卸载。分享一个比较简单实现。

思路就是利用批处理,关闭文件后执行bat,bat执行删除主文件,然后删除自己

        static void Main(string[] args)
        {
            Console.Write("按任意键删除程序本身");
            Console.ReadKey();
            Thread t = new Thread(() =>
            {
                try
                {
                    /*
                     调试的时候因为DeleteOwn.vshost.exe文件一直被vs占用所以删除会失效,直接执行就可以了
                     */
                    using (FileStream fs = new FileStream("del.bat", FileMode.Create))
                    {
                        using (StreamWriter sw = new StreamWriter(fs, Encoding.ASCII))
                        {
                            sw.WriteLine("@echo off");
                            sw.WriteLine("ping -n 3 127.1 >nul");//休眠三秒后执行,确保程序已经退出
                            sw.WriteLine(string.Concat("del", " \"", AppDomain.CurrentDomain.FriendlyName, "\""));//删除主程序,引号是保证文件名中包含空格也可以删除,FriendlyName修改名称后可以删除
                            sw.WriteLine("del %0");//删除自己
                        }
                    }
                    Process proc = new Process();
                    proc.StartInfo.FileName = "del.bat";
                    proc.StartInfo.UseShellExecute = false;//不显示命令行
                    proc.StartInfo.CreateNoWindow = false;//不在窗体展示
                    proc.Start();
                }
                catch { }
            });
            t.Start();
        }
时间: 2024-09-30 20:00:11

winform总结3> 有趣的bat/winform程序完成自己的任务,然后把自己删除的相关文章

基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(目录)

本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客户端应用程序的设计与开发. 基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(1:概述)

在win下,如何用bat看程序运行的时间

上网搜了下用bat记录程序运行时间的方法,结果连google跳出的都是些什么ctime啥的- - 一点都不靠谱 傍晚问了几个大神,也大多都是ctime党,不过还好明哲造![跪跪跪] 在此mark 就比如,text.exe是暴力程序,ac.exe是我们需要测试的程序,data.exe bat程序写成: @echo off :loop data.exe test.exe echo 运行时间 %time% ac.exe echo 运行时间 %time% fc ac.out test.out pause

atitit.添加win 系统服务 bat批处理程序服务的法总结instsrv srvany java linux

今天起得比较晚,又浪费了点时间,真可耻.. 下午又为校赛出了俩题,至此,校赛的四道题目已经完毕.又检查了一番,没有错误,就等待着明天的汇总了~. AC自动机的题目今天就刷了三道,还是没有完成之前的目标.现在vj也进不去了,想通宵,都不给机会~~ 只能等明天再刷完了,拖延不是一个好习惯. ----------------------------------------------------------------------------------------------------------

用bat批处理程序通过DOS命令行删除所有的空文件夹

用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我们确实不需要这些空文件了,那本文就学习一种命令行删除所有空文件夹的方法.并封装成.bat批处理程序.通过鼠标右键运行即可. 一,DOS删除命令 1.1,删除文件命令 del 若是想删除文件,输入del 盘符名:\文件名,比如,我想删除一个在F盘的名为123.txt的文件,则输入  del f:\12

LINQ To SQL在N层应用程序中的CUD操作、批量删除、批量更新

原文:LINQ To SQL在N层应用程序中的CUD操作.批量删除.批量更新 0. 说明 Linq to Sql,以下简称L2S.    以下文中所指的两层和三层结构,分别如下图所示: 准确的说,这里的分层并不是特别明确:(1) 生成的DataContext(Linq t0 SQL Runtime)和Entity是放在一个文件中的,物理上不能切割开来:上图只是展示逻辑上的结构.(2) 拿上图右边的三层结构来说,鉴于第(1)点,UI层就可以跨越BusinessLogic层,直接访问L2S层,这可能

转帖: 使用脚本删除程序(免除在[控制面板]->[添加或删除程序]中的手工操作)

1. 代码:VBS strComputer = "." '这个表示本地计算机 Set objWMIService = GetObject("winmgmts:" & " {impersonationLevel=impersonate}!\\" & strComputer & "\root \cimv2") '创建一个WMI对象 Set colSoftware = objWMIService.ExecQu

微信小程序setData复杂数组的更新、删除、添加、拼接

众所周知,微信小程序里所有对数据的修改只有在setData里修改才会在页面上渲染.在此分享小程序里复杂数组的更新.删除.添加.拼接 初始数据 数组嵌套对象 data: { cartList = [{ id: 1, goods: {id: 1, name: 'wechat'}, checked: true }, { id: 2, goods: {}, checked: false }, { id: 3, goods: {}, checked: true }] }, 索引部分删除 1 let ind

基于 SailingEase WinForm Framework 开发优秀的客户端应用程序(1:概述)

本系统文章将详细阐述客户端应用程序的设计理念,实现方法. 本系列文章以  SailingEase WinForm Framework 为基础进行设计并实现,但其中的设计理念及方法,亦适用于任何类型的客户端应用程序的设计与开发. 目录: http://www.cnblogs.com/sheng_chao/p/6084144.html 前言: 可能是接触计算机比较早,从96年左右386开始,到 Trubo C,以及后来的Foxpro.VB.Delphi,一直以来似乎都有一种客户端程序情节,喜欢写客户

WinForm 之 VS2010发布、打包安装程序

第一步.在vs2010 打开要打包的应用程序解决方案,右键" 解决方案 " → " 添加 " → " 新建项目 " → " 其他项目类型 " → " 安装和部署 " → " Visual Studio Installer " → " 安装项目 ": 在VS2010中将有三个文件夹,如下: 1."应用程序文件夹"表示要安装的应用程序需要添加的文件: