c# winfrom程序退出后删除程序自身

硅谷探秘者 3049 0 0

        在.NET程序中,因为运行中的程序是受系统保护的,不能自己删除自身的,所以自删除的思路是:在关闭本程序之前启动新的进程打开另一个程序,调用这个程序来删除原程序。然后再完成外部进程的销毁


代码如下:

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DeleteItself();
        }

        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);


可以在退出事件中调用DeleteItself();方法。


评论区
请写下您的评论...
暂无评论...
猜你喜欢
数据结构与算法 3280 二叉树节点c++先看一个简单的树图节点是分以下几种情况:1.待节点为叶子节点:此种情况下直接叶子节点即可2.待节点只有左子树,或只有右子树,那么将左子树或右子树的根节点替换该节点即可
linux系统 3607 ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样.ctrl+c强制中断ctrl+z的是将任务中断,挂起的状态,ctrl+c是强制中断的执行。ctrl+z的是将任务中断.但是此任
其他 3719 过系统调用,把它挂入系统。每当特定的消息发,在没有到达目的窗口前,钩子就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制
数据结构与算法 2385 链式队列的基本操作c++classnode{public:intdata;node*next;node*prev;};#include"node.h"classqueue{private:node
数据结构与算法 2719 简单单链表的增改查c++描述classnode{public:intdata;node*next;};#include"node.h"usingnamespacestd;classstack
weblog 2614 代码:namespaceConsoleApplication3{//声明定义委托(委托方法的返回值为int,有两个int类型的形参)publicdelegateintdelegateTest
数据结构与算法 2168 简单双向链表得增改查c++描述classnode{public:intdata;node*next;node*prev;};#include"node.h"classrelink
数据结构与算法 2975 链式栈的栈入栈操作c++描述基于双向链表//节点classnode{public:intdata;node*next;node*prev;};//双向链表#include"node.h
归档
2018-11  12 2018-12  33 2019-01  28 2019-02  28 2019-03  32 2019-04  27 2019-05  33 2019-06  6 2019-07  12 2019-08  12 2019-09  21 2019-10  8 2019-11  15 2019-12  25 2020-01  9 2020-02  5 2020-03  16 2020-04  4 2020-06  1 2020-07  7 2020-08  13 2020-09  9 2020-10  5 2020-12  3 2021-01  1 2021-02  5 2021-03  7 2021-04  4 2021-05  4 2021-06  1 2021-07  7 2021-08  2 2021-09  8 2021-10  9 2021-11  16 2021-12  14 2022-01  7 2022-05  1 2022-08  3 2022-09  2 2022-10  2 2022-12  5 2023-01  3 2023-02  1 2023-03  4 2023-04  2 2023-06  3 2023-07  4 2023-08  1 2023-10  1 2024-02  1 2024-03  1 2024-04  1
标签
算法基础 linux 前端 c++ 数据结构 框架 数据库 计算机基础 储备知识 java基础 ASM 其他 深入理解java虚拟机 nginx git 消息中间件 搜索 maven redis docker dubbo vue 导入导出 软件使用 idea插件 协议 无聊的知识 jenkins springboot mqtt协议 keepalived minio mysql ensp 网络基础 xxl-job rabbitmq haproxy srs 音视频 webrtc javascript
目录
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。