社区
C++ Builder
帖子详情
一个程序运行以后能删除自己么?
killhack
2003-02-18 04:45:26
一个程序运行以后能删除自己么? 急用!!
...全文
116
3
打赏
收藏
一个程序运行以后能删除自己么?
一个程序运行以后能删除自己么? 急用!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
maoke000
2003-02-18
打赏
举报
回复
试试这个函数,我写的更新程序时用的。
void DeleteSelf()
{
TProcessInformation ProcessInfo;
TStartupInfo StartUpInfo;
AnsiString sPath = ExtractFilePath(ParamStr(0));
AnsiString BatchFileName = sPath + "DelSelf.bat";
TStringList* vStringList = new TStringList;
try
{
vStringList->Add(":try");
vStringList->Add("del \"" + ParamStr(0) + "\"");
vStringList->Add("if exist \"" + ParamStr(0) + "\" goto try");
vStringList->Add("del %0");
vStringList->SaveToFile(BatchFileName);
}
__finally
{
delete vStringList;
}
memset(&StartUpInfo, 0, sizeof(TStartupInfo));
StartUpInfo.dwFlags = STARTF_USESHOWWINDOW;
StartUpInfo.wShowWindow = SW_HIDE;
char* szCmdLine = BatchFileName.c_str();
if(CreateProcess(NULL, szCmdLine, NULL, NULL,
false, IDLE_PRIORITY_CLASS, NULL, NULL, &StartUpInfo,
&ProcessInfo))
{
CloseHandle(ProcessInfo.hThread);
CloseHandle(ProcessInfo.hProcess);
}
}
l_clove
2003-02-18
打赏
举报
回复
NowCan的代码
#include <windows.h>
int main()
{
char buf[MAX_PATH];
HMODULE Hm1,Hm2;
HANDLE Ex,De,Un;
Hm2=GetModuleHandle(0);
GetModuleFileName(Hm2,buf,255);
Hm1=GetModuleHandle("Kernel32");
Ex=GetProcAddress(Hm1,"ExitProcess");
De=GetProcAddress(Hm1,"DeleteFileA");
Un=GetProcAddress(Hm1,"UnmapViewOfFile");
CloseHandle(HANDLE(4));
__asm {
LEA EAX,buf
PUSH 0
PUSH 0
PUSH EAX
PUSH Ex
PUSH Hm2
PUSH De
PUSH Un
RET
}
return 0;
}
pepsi1980
2003-02-18
打赏
举报
回复
这个问题在以前解决过了,借花献佛!
int main(int argc, char *argv[])
{
HMODULE module = GetModuleHandle(0);
CHAR buf[MAX_PATH];
GetModuleFileName(module, buf, sizeof buf);
CloseHandle(HANDLE(4));
__asm {
lea eax, buf
push 0
push 0
push eax
push ExitProcess
push module
push DeleteFile
push UnmapViewOfFile
ret
}
return 0;
}
VC 如何使
程序运行
后自己
删除
自己
有时候,我们需要创建
一个
运行后能够自己
删除
自己的可执行程序即自
删除
程序。很明显如果
一个
进程通过直接调用DeleteFile()来
删除
自己是不可能的。必须另想办法,经过本人在网上参考很多资料后实际测试并集众家之所长,发现有二种方法效果比较好。现在将其封装成函数,这样使用将更加容易: 方法1,调用BAT文件。 [cpp] view plaincopy //
面试官给我挖坑:rm
删除
文件之后,空间就被释放了吗?
在Linux,你是不是曾经天真的以为,使用rm
删除
一个
文件,占用的空间就释放了?事情可能不是常常如人意。产生
一个
指定大小的随机内容文件我们先看一下当前各个挂载目录的空间大小:$ df -...
程序运行
机理
每次写完程序,按下Ctrl+F5,结束。我们从来不关心过程,正确了到还好,如果错误了我们便不知从那下手,这也是许多刚写程序的人经常苦恼的事。然而大神都是很快锁定错误范围,逐个排查。接下来给大家分享一些
程序运行
背后机理。 我们编写的C语言程序是源程序,计算机不能直接识别和执行高级语言所写的指令,必须用编译器把C源程序翻译成二进制形式的目标程序,然后再将目标程序与系统的函数库以及其...
删除
进程自身可执行文件的另一种方法
为什么80%的码农都做不了架构师?>>> ...
用Visual C#来
删除
注册表中的注册信息
在《用Visual C#读取注册信息》的文中,已经介绍了用 Visual C#来读取注册表中的注册信息。本文就来介绍用Visual C#对注册表的另外
一个
操作,这也是
一个
具有破坏性的操作过程--
删除
注册信息。在上文中已经知道,由于Visual C#本身没有带类库,他对注册表的处理过程是通过调用.Net FrameWork SDK中的名称空间Microsoft.Win32中封装的二个类来实现
C++ Builder
13,871
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章