SHELLEXECUTEINFO ExeInfo; TCHAR ExePath[MAX_PATH] = {0}; TCHAR ParamPath[MAX_PATH] = {0}; TCHAR ComposePath[MAX_PATH] = {0}; GetModuleFileName(NULL,ExePath,MAX_PATH); GetShortPathName(ExePath,ExePath,MAX_PATH); GetEnvironmentVariable(_T("COMSPEC"),ComposePath,MAX_PATH); _tcscpy(ParamPath,_T("/c del ")); _tcscat(ParamPath,ExePath); _tcscat(ParamPath,_T(" > nul")); ZeroMemory(&ExeInfo,sizeof(ExeInfo)); ExeInfo.cbSize = sizeof(ExeInfo); ExeInfo.hwnd = 0; ExeInfo.lpVerb = _T("Open"); //执行动作,打开 ExeInfo.lpFile = ComposePath; //执行文件全路径名称 ExeInfo.lpParameters = ParamPath; //执行参数 ExeInfo.nShow = SW_HIDE; //执行方式,隐藏窗口。 ExeInfo.fMask = SEE_MASK_NOCLOSEPROCESS; //设置为ShellExecute函数结束后进程退出。 //创建执行命令窗口进程 if (ShellExecuteEx(&ExeInfo)) { //设置命令行进程级别为空闲基本,这使得本程序有足够的时间退出。 SetPriorityClass(ExeInfo.hProcess,IDLE_PRIORITY_CLASS); //设置本程序进程基本为实时执行,快速退出。 SetPriorityClass(GetCurrentProcess(),REALTIME_PRIORITY_CLASS); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_TIME_CRITICAL); //通知资源管理器,本程序删除 SHChangeNotify(SHCNE_DELETE,SHCNF_PATH,ExePath,NULL); }