/*一个控制台程序*/
#include "stdafx.h"
#include "Windows.h"#define FILENAME "joke.exe"
int main(int argc, char* argv[])
{
 char file[512],sysdir[128];
 ::GetModuleFileName(NULL,file,sizeof(file));
 ::GetWindowsDirectory(sysdir,sizeof(sysdir));
 strcat(sysdir,"\\");
 strcat(sysdir,FILENAME);
 if(strcmp(file,sysdir))
 {
file://将自己复制到windows目录
  if(!CopyFile(file,sysdir,FALSE))
       return 0;
  else
  {
file://启动自己的拷贝
   STARTUPINFO startUpInfo ;
   PROCESS_INFORMATION procInfo;
   memset(&startUpInfo,0,sizeof(STARTUPINFO));
   startUpInfo.cb=sizeof(STARTUPINFO);
   startUpInfo.lpReserved=NULL;
   startUpInfo.lpDesktop=NULL;
   startUpInfo.lpTitle=NULL;
   startUpInfo.dwX=0;
   startUpInfo.dwY=0;
   startUpInfo.dwXSize=0;
   startUpInfo.dwYSize=0;
   startUpInfo.dwXCountChars=80;
   startUpInfo.dwYCountChars=25;
   startUpInfo.dwFillAttribute=0;
   startUpInfo.dwFlags=STARTF_USECOUNTCHARS|STARTF_USESHOWWINDOW;
   startUpInfo.wShowWindow=SW_SHOWDEFAULT;
   startUpInfo.cbReserved2=0;
   startUpInfo.lpReserved2=NULL;
   startUpInfo.hStdError=NULL;
   startUpInfo.hStdInput=NULL;
   startUpInfo.hStdOutput=NULL;   /*为什么这个控制台没有显示,而且当前进程结束了CreateProcess的进程也结束了
*/if(!CreateProcess(NULL,sysdir,NULL,NULL,TRUE,NORMAL_PRIORITY_CLASS,NULL,NULL
,&startUpInfo,&procInfo))
   {
   }
  } }
 MessageBox(NULL,file,"测试",MB_OK|MB_APPLMODAL);
 MessageBox(NULL,file,"结束",MB_OK|MB_APPLMODAL);
 return 0;
}