我在自己的程序里是这样使用的 UpdateData(true); 
 CFileDialog dlg(TRUE,NULL,NULL,OFN_ALLOWMULTISELECT,_T("Text Files (*.txt) ¦*.txt ¦All Files (*.*) ¦*.* ¦ ¦"),AfxGetMainWnd()); 
 //AfxGetMainWnd() 
 if (dlg.DoModal()==IDOK) 
 { 
  str4=dlg.GetPathName(); 
  m_f4=str4;//m_f4是我最终想获得的文件路径 
 } 
 //MessageBox(m_f4);//测试用 
 UpdateData(false); 当我利用上述结果执行下面命令时就会出错了 ShellExecute (NULL,NULL,"cmd.exe","/C svmscale -l "+m_f1+" -u "+m_f2+" -s "+ 
                   m_f3+" "+m_f4+">"+m_f5+".scale",NULL,SW_NORMAL); 如果不点选文件对话框的按钮m_f4使用默认值的话就不会有问题