Windows自删除

xingyun86 2023-6-8 871

Windows自删除

SHELLEXECUTEINFOA sei;
CHAR szModule[MAX_PATH], szComspec[MAX_PATH], szParams[MAX_PATH];
//获取文件路径名  
if ((GetModuleFileNameA(0, szModule, MAX_PATH) != 0) &&
	(GetShortPathNameA(szModule, szModule, MAX_PATH) != 0) &&
	(GetEnvironmentVariableA("COMSPEC", szComspec, MAX_PATH) != 0))
{  //设置命令行参数。  
	lstrcpyA(szParams, "/c del ");
	lstrcatA(szParams, szModule);
	lstrcatA(szParams, " > nul");
	//初始化SHELLEXECUTEINFO结构成员  
	sei.cbSize = sizeof(sei);//设置类型大小。  
	//命令窗口进程句柄,ShellExecuteEx函数执行时设置。  
	sei.hwnd = 0;
	sei.lpVerb = "Open";//执行动作为“打开执行”。  
	sei.lpFile = szComspec;      //执行程序文件全路径名称。  
	sei.lpParameters = szParams; //执行参数。  
	sei.lpDirectory = 0;
	//显示方式,此处使用隐藏方式阻止出现命令窗口界面。  
	sei.nShow = SW_HIDE;
	//设置为SellExecuteEx函数结束后进程退出。  
	sei.fMask = SEE_MASK_NOCLOSEPROCESS;
	//创建执行命令窗口进程。  
	if (ShellExecuteExA(&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);
	}
}


×
打赏作者
最新回复 (0)
查看全部
全部楼主
返回