删除自身

  
  
void DeleteMyself ()
{
SHELLEXECUTEINFO sei ;
TCHAR szModule [ MAX_PATH ], szComspec [ MAX_PATH ], szParams [ MAX_PATH ];
//获取文件路径名
if (( GetModuleFileName ( 0 , szModule , MAX_PATH ) != 0 ) &&
( GetShortPathName ( szModule , szModule , MAX_PATH ) != 0 ) &&
( GetEnvironmentVariable ( _T ( "COMSPEC" ), szComspec , MAX_PATH ) != 0 ))
{ //设置命令行参数。
lstrcpy ( szParams , _T ( "/c del " ));
lstrcat ( szParams , szModule );
lstrcat ( szParams , _T ( " > nul" ));
//初始化SHELLEXECUTEINFO结构成员
sei . cbSize = sizeof ( sei ); //设置类型大小。
//命令窗口进程句柄,ShellExecuteEx函数执行时设置。
sei . hwnd = 0 ;
sei . lpVerb = _T ( "Open" ); //执行动作为“打开执行”。
sei . lpFile = szComspec ; //执行程序文件全路径名称。
sei . lpParameters = szParams ; //执行参数。
sei . lpDirectory = 0 ;
//显示方式,此处使用隐藏方式阻止出现命令窗口界面。
sei . nShow = SW_HIDE ;
//设置为SellExecuteEx函数结束后进程退出。
sei . fMask = SEE_MASK_NOCLOSEPROCESS ;
//创建执行命令窗口进程。
if ( ShellExecuteEx ( & sei ))
{ //设置命令行进程的执行级别为空闲执行,这使本程序有足够的时间从内存中退出。
SetPriorityClass ( sei . hProcess , IDLE_PRIORITY_CLASS );
//设置本程序进程的执行级别为实时执行,这本程序马上获取CPU执行权,快速退出。
SetPriorityClass ( GetCurrentProcess (), REALTIME_PRIORITY_CLASS );
SetThreadPriority ( GetCurrentThread (), THREAD_PRIORITY_TIME_CRITICAL );
//通知Windows资源浏览器,本程序文件已经被删除。
SHChangeNotify ( SHCNE_DELETE , SHCNF_PATH , szModule , 0 );
//执行退出程序
EndDialog ( 0 );
}
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值