可执行文件删除自身

发布时间:2020-06-23 09:47:37 作者:Chinayu2014
来源:网络 阅读:569
BOOL SelfDel()
{
	SHELLEXECUTEINFO sei;
	//字符串数组  
	TCHAR szModule[MAX_PATH], szComspec[MAX_PATH], szParams[MAX_PATH];

	//获得exe文件名
	//获取szComspec=cmd.exe  
	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"));

		// 设置结构成员.  
		sei.cbSize = sizeof(sei);
		sei.hwnd = 0;
		sei.lpVerb = _T("Open");
		sei.lpFile = szComspec;
		sei.lpParameters = szParams;
		sei.lpDirectory = 0;
		sei.nShow = SW_HIDE;
		sei.fMask = SEE_MASK_NOCLOSEPROCESS;

		// 执行shell命令.  
		if (ShellExecuteEx(&sei))
		{
		  // 设置命令行进程的执行级别为空闲执行,使本程序有足够的时间从内存中退出.   
		  SetPriorityClass(sei.hProcess, IDLE_PRIORITY_CLASS);
		  SetPriorityClass(GetCurrentProcess(), REALTIME_PRIORITY_CLASS);
		  SetThreadPriority(GetCurrentThread(), THREAD_PRIORITY_TIME_CRITICAL);

		  // 通知Windows资源浏览器,本程序文件已经被删除.  
		  SHChangeNotify(SHCNE_DELETE, SHCNF_PATH, szModule, 0);
		  return TRUE;
		}
	}
	return FALSE;
}

创建自删除bat文件

void  main()
{
	FILE *pf = fopen("1.bat", "w");
	fputs("taskkill /f /im 自删除.exe\n", pf);
	fputs("del  自删除.exe\n", pf);
	fputs("del 1.bat\n", pf);
	fclose(pf);
	system("1.bat");
	system("pause");
}


推荐阅读:
  1. python如何打包exe可执行文件?
  2. Java执行exe,bat等可执行文件

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

可执行文件删除自身

上一篇:java中的事件是什么?怎么用

下一篇:微信小程序实现顶部选项卡的方法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》