Chinaunix首页 | 论坛 | 博客
  • 博客访问: 379471
  • 博文数量: 715
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5005
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:46
文章分类

全部博文(715)

文章存档

2011年(1)

2008年(714)

我的朋友

分类:

2008-10-13 16:34:15

// Delself.cpp: 删除正在运行的程序
//
// Coder Jozu

#include
#include
#include

#pragma comment(lib, "Shell32.lib")

#define ERROR_RET  1
#define ERROR_SUC  0

#define COMSPEC   TEXT("COMSPEC")
#define ARGS_PREX  TEXT(" /c del ")
#define ARGS_ERR_REDIR TEXT(" >NUL")

int main(int argc, char** argv)
{
 TCHAR szModuleName[MAX_PATH] = { 0 };
 TCHAR szCommand[MAX_PATH] = { 0 };
 TCHAR szParams[MAX_PATH] = { 0 };

 STARTUPINFO si = { sizeof(STARTUPINFO) };
 PROCESS_INFORMATION pi;


 if(!GetModuleFileName(NULL, szModuleName, MAX_PATH))
  return ERROR_RET;
 
 if(!GetShortPathName(szModuleName, szModuleName, MAX_PATH))
  return ERROR_RET;

 if(!GetEnvironmentVariable(COMSPEC, szCommand, MAX_PATH))
  return ERROR_RET;

 _tcscat(szCommand, ARGS_PREX);
 _tcscat(szCommand, szModuleName);
 _tcscat(szCommand, ARGS_ERR_REDIR);
 
 if(SetPriorityClass(GetCurrentProcess(),
  REALTIME_PRIORITY_CLASS))
 {
  if(SetThreadPriority(GetCurrentThread(),
   THREAD_PRIORITY_TIME_CRITICAL))
  {
   //
   if(CreateProcess(NULL,
    szCommand,
    NULL,
    NULL,
    FALSE,
    0,
    NULL,
    NULL,
    &si,
    &pi))
   {
    SetPriorityClass(pi.hProcess,
     IDLE_PRIORITY_CLASS);

    SetProcessPriorityBoost(pi.hProcess,
     TRUE);

    SHChangeNotify(SHCNE_DELETE,
     SHCNF_PATH,
     szModuleName,
     NULL);
    return TRUE;
   }
  }
  else
  {
   SetPriorityClass(GetCurrentProcess(),
    NORMAL_PRIORITY_CLASS);
  }
 }
 return ERROR_RET;
}


--------------------next---------------------

阅读(138) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~