PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si,0,sizeof(si)); ZeroMemory( &si, sizeof(si) );
          ZeroMemory( &pi, sizeof(pi) ); si.cb=sizeof(si);
si.wShowWindow=SW_SHOW;
si.dwFlags=STARTF_USESTDHANDLES; //si.hStdError = 
si.lpDesktop = "WinSta0\\Default";
int length = lstrlen(pathName);
CString str;
str.Format("%s",pathName);
int lastIndex = str.ReverseFind('\\');
lstrcpyn(dir,pathName,lastIndex+1);
char appName[DEF_MAX_BUF];
lstrcpy(appName,pathName);
lstrcat(pathName," -fl"); /***appName和pathName是正确的 在XP下能成功地运行*****/
if(!CreateProcess(appName,pathName,NULL,NULL,FALSE,CREATE_SUSPENDED,NULL,dir,&si,&pi))
{
CString str;
str.Format("出错了 错误代码:%x",GetLastError());
AfxMessageBox(str);
return;
}
         ResumeThread(pi.hThread);但是 在Windows Server 2003下 怎么毫无反应呢????

解决方案 »

  1.   

    不是 在Server 2003里 直接启动我的程序 然后就不行了 XP下可以很好的运行
      

  2.   

    贴下你的appName和pathName具体是什么
      

  3.   

    appName和pathName是正确的 在XP下能成功地运行 但是去了server 2003怎么就不行呢???是不是 解析的不一样啊??
      

  4.   

    测试下:
    PROCESS_INFORMATION pi;
    STARTUPINFO si = { sizeof(si)};
    ZeroMemory( &pi, sizeof(pi) );CreateProcess(NULL, _T("\""C:\\WINDOWS\\system32\\notepad.exe\"", NULL, NULL,CREATE_SUSPENDED, NULL, _T("c:\\windows\\system32"),&si,&pi);也可以在CreateProcess创建失败后立刻调用GetLastError看下错误码是多少。