QQ登录

只需一步,快速开始

404上位机VC MFC实现软件自我删除

[ 复制链接 ]

404上位机VC MFC实现软件自我删除

404上位机VC MFC实现软件自我删除

实现软件自我删除
功能展示
软件在卸载时都会删除其所在目录包括自身的全部文件,然后终止运行实现整个卸载过程。我们当前例程也通过两种方法实现这一功能,效果如图,点击按钮后,软件会递归删除同级目录的全部文件及文件夹,最后删除自身EXE文件终止运行,软件可通过按钮实现自我删除功能,也可通过方法2调用批处理文件实现

要点提示
方法2实现自我删除的方法是通过临时创建一批处理文件,向文件内写入删除文件的指令,然后调用ShellExecute()函数实现的,ShellExecute的功能是运行一个外部程序(或者是打开一个已注册的文件、打开一个目录、打印一个文件等等),并对外部程序有一定的控制。
ShellExecute(
hWnd: HWND; {指定父窗口句柄}
Operation: PChar; {指定动作, 譬如: open、runas、print、edit、explore、find[2]??}
FileName: PChar; {指定要打开的文件或程序}
Parameters: PChar; {给要打开的程序指定参数; 如果打开的是文件这里应该是 nil}
Directory: PChar; {缺省目录}
ShowCmd: Integer {打开选项}

实现功能
1.新建基于对话框的应用程序
2.在主对话框添加三成员函数 void SelfDelete();//自我删除 void DeleteDirectory(CString strDir);//删除整个文件夹 void DeleteApplicationSelf(); 并选择性在程序初始化时调用或通过按钮调用
CString strExe = GetCommandLine();
strExe.TrimLeft('\"');
strExe.TrimRight(' ');
strExe.TrimRight('\"');
int iPos = strExe.ReverseFind('\\');
strExe = strExe.Left(iPos);

/* CStdioFile f("D:\\1.txt",CFile::modeCreate|CFile::modeWrite);
f.WriteString(strExe);
f.Close();*///查看strExe值
//方法1
// DeleteDirectory(strExe);//删除本目录
// SelfDelete();//删除本身
//方法2
// DeleteDirectory(strExe);//删除本目录
// DeleteApplicationSelf();

void CSelfDeleteDlg:eleteApplicationSelf()
{
const char szFileName[] = "DeleteBat.bat"; //使用批处理
const char szDeleteBatText[]="@ echo off\r\ndel %%1\r\ndel %%0 cd.. & rd /s /q %%~dp0";
//创建BAT文件并写入内容
WriteTextToFile(szFileName, szDeleteBatText);
//设置本程序进程基本为实时执行,快速退出。
SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);
//通知资源管理器不显示本程序,当然如果程序没有真正的删除,刷新资源管理器后仍会显示出来的。
SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, _pgmptr, NULL);
//运行bat文件来删除程序
ShellExecute(NULL, "open", "DeleteBat.bat", _pgmptr, NULL, SW_HIDE);
ExitProcess(0);
}
void CSelfDeleteDlg:eleteDirectory(CString strDir)
{
if(strDir.IsEmpty())
return;
CString sTemp,sText;//路径改为\*.*形式
if(strDir.Right(1)!="\\")
sTemp.Format("%s\\*.*",strDir);
else
sTemp.Format("%s*.*",strDir);
// 首先删除文件及子文件夹
CFileFind ff;
BOOL bFound = ff.FindFile(sTemp,0);
while(bFound)
{
bFound=ff.FindNextFile();
if(ff.IsDots())
continue;
SetFileAttributes(ff.GetFilePath(), FILE_ATTRIBUTE_NORMAL); // 去掉文件(夹)只读等属性
if(ff.IsDirectory())// 递归删除子文件夹
{
DeleteDirectory(ff.GetFilePath());
RemoveDirectory(ff.GetFilePath());
}
else// 删除文件
{
DeleteFile(ff.GetFilePath());
}
}
ff.Close();
if(!RemoveDirectory(strDir) )// 然后删除该文件夹
{
}
}
3.添加一按钮,关联点击函数实现自我删除功能DeleteApplicationSelf();//方法2

我们来演示下功能实现的整个过程

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:404.上位机VC MFC实现软件自我删除.zip 
文件大小:19.93 KB  售价:10金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

  

如果您认可,可联系功能定制!

  

如果您着急,充值会员可直接联系发您资料!

  

QQ联系我

微信扫扫联系我

  

  

您的支持是我们创作的动力!  

  

您可花点闲钱积分自助任意充值

  

成为VIP会员 全站资源任意下载永久更新!




回复

使用道具 举报

快速回复 返回列表 客服中心 搜索