a.exe同级下有一目录Config,Config中有一b.exe和b.ini配置文件,单独运行b.exe可以正确读取ini,可是从a.exe调用b.exe之后,配置文件读不出来.发现是调用的时候a把他的路径传递给b了.导致了b调用了上一级目录下的b.ini.b中获取ini的路径用的是GetCurrentDirectory,如何解决?PROCESS_INFORMATION pi; 
memset(&pi,0,sizeof(pi));
STARTUPINFO si; 
memset(&si,0,sizeof(si)); 
si.cb=sizeof(si); 
si.wShowWindow=SW_SHOW; 
si.dwFlags=0; CString strPath;
strPath.Format(_T("Config\\b.exe"));
CreateProcess(NULL,strPath.GetBuffer(), NULL, NULL,TRUE, 0, NULL, NULL, &si,&pi);ShellExecute(NULL,"open",strPath,NULL,NULL,SW_SHOWNORMAL); WinExec(strPath,SW_SHOWNORMAL);
都不行

解决方案 »

  1.   

    GetCurrentDirectory是不对的。要用绝对路径。GetModuleFileName
      

  2.   

    CreateProcess时指定lpCurrentDirectory为exe文件要求的目录。
      

  3.   

    不管是绝对路径还是相对路径都不行,b.exe是可以启动,但是配置文件读不出来.我试过了.GetModuleFileName获得的路径和命令行获得的路径不同.从命令行参数获取传递进来的路径参数就是a的路径.而GetModuleFileName获得的是b路径
    现在的问题就是如何在CreateProcess的时候不传递参数给b.exe
      

  4.   

    调用b.exe前用SetCurrentDirectory试试.
      

  5.   

    请问能具体一点么。用SetCurrentDirectory达到的目的是什么呢,谢了!