程序运行后自动删除

android 数据库锁的问题 最近在项目中遇到一个错误: 12-26 17:29:10.501 32592 32644 W SQLiteConnectionPool: The connection pool for database '***.db' has been unable to grant a connection to thread 1378 (thread-pool-0) with flags 0x2 for... 阅读详情

    很多时候(例如你想做一些恶意的事情)你需要程序执行后自动删除。我们知道,在程序执行的过程中,我们是无法删除它的。那么怎么做呢?很简单,在它结束并释放资源之后删除它。
    一个简单的办法是使用批处理文件,在程序结束的时候生成一个批处理文件,此文件的信息就是尝试删除指定的程序。

    一个在DELPHI下删除自身的例子:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 
= class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  
private
    
{ Private declarations }
  
public
    
{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure DeleteMe;
//删除自身的过程
var
  BatchFile: TextFile;
//定义一个文本文件
  BatchFileName: string;//文件名
  ProcessInfo: TProcessInformation;
  StartUpInfo: TStartupInfo;
begin
  BatchFileName :
= ExtractFilePath(ParamStr(0)) + '_deleteme.bat';
  
//写一个删除指定程序的.bat文件
  AssignFile(BatchFile, BatchFileName);
  Rewrite(BatchFile);
  Writeln(BatchFile, 
':try');
  Writeln(BatchFile, 
'del "' + ParamStr(0+ '"');
  Writeln(BatchFile,
    
'if exist "' + ParamStr(0+ '"' + ' goto try');
  Writeln(BatchFile, 
'del %0');
  CloseFile(BatchFile);
  
//执行这个文件
  FillChar(StartUpInfo, SizeOf(StartUpInfo), $00);
  StartUpInfo.dwFlags :
= STARTF_USESHOWWINDOW;
  StartUpInfo.wShowWindow :
= SW_HIDE;
  
if CreateProcess(nil, PChar(BatchFileName), nil, nil,
    False, IDLE_PRIORITY_CLASS, nil, nil, StartUpInfo,
    ProcessInfo) then
  begin
    CloseHandle(ProcessInfo.hThread);
    CloseHandle(ProcessInfo.hProcess);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  DeleteMe;
  close;
end;

end.

     

     注:WINXP+D7下测试通过。

ESP32-C3入门教程 基础篇⑩——SNTP(Simple Network Time Protocol) 网络时间同步的简单实例 阅读详情

相关推荐

Windows批处理实现程序自删除技术详解

关键 API 函数包括:函数名功能说明删除指定文件移动或延迟删除文件打开文件进行读写操作查找文件。

weixin_36364707的博客 770

程序自删除

原理 之所以可以使用批处理来实现文件自删除,是因为批处理有一个特别的地方就是:批处理提供了自己删除自己的命令: del %0 这个命令,批处理执行后,就会把自身文件删除了,而且不放进回收站。所以,有了这个关键技术作为前提,使用批处理方式实现程序的自删除,就好理解了。 构造自删除批处理文件,批处理文件的内容就是先延迟一定的时间,例如延迟 5 秒,然后开始删除指定文件后,再执行删除命令 在程序中,创建一个新进程调用并批处理。进程创建成功后,立马结束进程 这样,进程创建起来,执行批处理文件。等批处理文件

LYSM 1136

exe自删除程序.程序运行后,自己删除自己

vc++ exe自删除程序.程序运行后,自己销毁自己

VC 自身删除本程序

有时候,我们需要创建一个运行后能够自己删除自己的可执行程序即自删除文件。很明显如果一个进程通过直接调用DeleteFile()来删除自己是不可能的。必须另想办法,经过本人在网上参考很多资料后实际测试并集众家之所长,发现有二种方法效果比较好。现在将其封装成函数,这样使用将更加容易:

baggio3241437的专栏 4084

win-bat批处理命令

cmd 与 powershel 命令和关键字不区分大小写,变量名区分大小写DOS 是磁盘操作系统;命令提示符是 DOS 系统的界面中输入 DOS 命令的提示位置;cmd 是系统运行其自带 DOS 的命令PID 是 processid(进程号);IM 是 imaginename(映像名称)在 .bat 文件开头加上@echo off代表不输出描述,比如这样的描述不会输出,直接输出结果echo输出结果,pause使命令框停顿,pause>nul表示不输出结束提示,cls清屏命令,dir查看目录。

weixin_51992178的博客 3381

bat脚本执行自动删除

Windows批处理(batch)文件中,如果你想在脚本执行毕后自动删除批处理文件,可以使用以下方法。这可以通过在批处理文件的最后添加一行代码来实现,该行代码使用del命令删除当前批处理文件。如果你想在删除文件之前执行一些额外的清理或日志记录操作,可以先调用一个子程序(另一个批处理文件),然后再从子程序删除批处理文件。在某些情况下,如果你在脚本中使用了绝对路径来调用其他程序或脚本,确保这些路径在删除前是有效的。在批处理文件的最后一行,你可以使用%0来引用当前批处理文件的名称。方法2:使用%~f0。

计算机辅助工程 1990

去掉TabActivity底部默认白线

经过一翻百度,google终于实现了TabActivity设置tab自定义背景颜色,设置tab中标题文字的颜色。并将TabWidget置于底部 [img]http://dl.iteye.com/upload/attachment/570724/43a6ce80-e1ce-3c6c-a1a8-c9852e6c6293.jpg[/img] TabManager: [code="java"...

我思故我在 292

TabActivity 去除按钮底下的默认灰色线

TabActivity设置时 默认的底下有一条灰色的线条 ,而且按钮默认的颜色为橘色  修改的办法为  mytabhost = this.getTabHost(); final TabWidget tabwidget =mytabhost.getTabWidget(); /************************去除白线  tabwidget .setStripE

逆风的专栏 640

如何将TabBar放置底部?

如何将TabBar放置底部? 在xml布局文件中,将TabWidget放于FrameLayout的下面(两者是垂直线性的关系),并分配各个组件的权重另外,如果想去掉Tab中那个丑陋的白线,可以通过设置其Padding实现. http://schemas.android.com/apk/res/android"         android:id="@android:id/tabhos

yilongxian520的专栏 1731

android TabHost解决下面白线

我之前做分页都是用GridView和ActivityGroup实现的.因为觉得TabHost不好用,还有就是自己水平差的原因吧.如果帮的话,重写view任何问题都可以解决,呵呵,下面请看实现过程,其实很简单.       针对TabHost的运用,我就不多讲解了,网上例子好多,或者你也可以下载我的Demo查看,不过先声明,写的不好.        代码片段: public class M

jj120522的专栏 4647

tabhost 继承tabActivity 将tabwidget放置底部。

android中的TabActivity是专门用来放置TabHost组件的,但是很遗憾,非常固定,必须放在顶部,对于单手使用手机的人来说,很不方便。。。 所以研究了一下如何将TabBar放置底部 具体思路是在xml布局文件中,将TabWidget放于FrameLayout的下面(两者是垂直线性的关系。。),并分配各个组件的权重 另外,如果想去掉Tab中那个丑陋的白线,可以通过设置其Pa...

kouriba 175

Android学习之 UI--Tabhost

Tabhost 史上最全的Android的Tab与TabHost讲解-Android 实例教程-eoeAndroid开发者社区 - Powered by Discuz! android Tabhost部件 - 疯狂 - BlogJava用ActivityGroup解决TabHost中多个Activity跳转问题 - YUZHIBOYI的专栏 - 博客频道 - CSDN.NE

The fucking code 761

<android开发>所有的view都包含tabwidget简单实现

最近在接触android应用开发,上次遇到个需求,需要实现所有的打开视图都包含换页选项卡,当时比较忙查了一下没有太好的实现方式,就没接着搞,今天没什么事情看了一下tabhost源码,原来实现这个效果还挺容易的,只是按返回键时会退出程序,不过这也没关系,自己加个activity的队列过滤一下返回键就可以解决这个问题。 代码如下,简单测试过:通过showActivity方法启动新的activity即

Mustang's Note 1056

bat脚本实现执行删除本身脚本文件

bat脚本实现执行删除本身脚本文件

susu1083018911的博客 1610

批处理——自动删除文件

自动删除文件forfiles /p " D:\DB_Backup " /d -7 /c "cmd /c echo deleting @file ... && del /f @path"注释:" D:\DB_Backup "是文件所在目录,‘/d /7 /c’指超过7天的文件。 转载于:https://www.cnblogs.com/Jian-Zhang/p/7268091.ht...

weixin_30768175的博客 395

Delphi程序退出时删除自身的实现

这样取得的地址实际上是这个封装代码的,而这段代码又处于 UnmapViewOfMap 解除映像范围类,因此,到调用 DeleteFile 函数的时候就无法反问到这段代码了。  解决的办法是,用GetProcAddress动态取得这几个API的地址。   Delphi&CB代码如下: ////////////////////////////////////////

求佛 2055

利用批处理文件bat自动删除和压缩文件

批处理文件来管控服务日志,定时删除和压缩,以防它占的磁盘空间过大。 1、写bat文件,相关代码如下: ::服务日志处理流程:1、删除n天以前的日志 2、压缩今天之前的日志 ::服务日志所在目录:D:\services\Log ::1、删除服务30天前的日志 Forfiles /p D:\services\Log /s /d -30 /m *.* /c "cmd /c del /q /f @path" ::2、压缩今天之前的日志,并删除源文件(只压缩文件类型为.log的文件) set Path=;"

Welcome 4190

转:如何简单实现可执行文件的自我删除

如何简单实现可执行文件的自我删除作者:zyq654321可执行文件即 EXE 文件在运行过程中,由系统管理其打开的句柄。此时对该文件的一些操作是被系统禁止的,比如删除操作。然而在某些场合,可能须要程序有自我删除的功能,也就是程序运行结束后删除自身。基于这个想法,可以有一种很简单的方法来实现这个基本功能。 本方法基于两点来实现删除功能。一是利用 windows 的 command program 的

1451

各地级市城市空气质量指数数据(日度)2000.06.05-2024.12.31(AQI、API、空气质量级别、首要污染物)

各地级市城市空气质量指数数据(2000.06.05-2024.12.31)(日度)(AQI、API、空气质量级别、首要污染物)1、时间:2000年6月5日-2024年12月31日2、指标:统计日期、地区编码ID、城市代码、城市名称、AQI、API、空气质量级别、首要污染物3、范围:地级市(2015年之前城市数量较少,2015年之后城市数量为360+)4、来源:空气质量在线检测分析平台5、样本量:173W+

上一篇: DELPHI中使用RTTI
下一篇: 映射文件的使用
wudi_1982
博客等级 码龄24年 40粉丝 58原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值