我想把mididll.cpl文件从当前目录Copy到d:\Winnt\system32下,用下面的语句不能成功,CopyFile返回值为TRUE,但文件没有Copy到指定的目录下。strcpy(sSysDir,"d:\\winnt\\system32");
strcat(sSysDir,"\\mididll.CPL");
if(!CopyFile(strInfFileName,sSysDir,FALSE))
{
   AfxMessageBox("error");
   return ;
}而下面却成功
strcpy(sSysDir,"d:\\winnt");
strcat(sSysDir,"\\mididll.CPL");
if(!CopyFile(strInfFileName,sSysDir,FALSE))
{
   AfxMessageBox("error");
   return ;
}

解决方案 »

  1.   

    我按照你提供的程序试了。结果在system32中找到了这个文件。
      

  2.   

    可能是开始楼主的 strInfFileName 没有正确的得到值,程序没找到文件 .
      

  3.   

    strInfFileName 已经是正确了,因为Copy 到"d:\\Winnt"已经可以了。
      

  4.   

    哈哈...程序发到 [email protected] 我看看 .
      

  5.   

    CString strInfFileName = "C:\\hello.txt";
    TCHAR sSysDir[256];
    memset(sSysDir,0,256*sizeof(TCHAR));
    strcpy(sSysDir,"c:\\windows\\system32");
    strcat(sSysDir,"\\hello.txt");
    if(!CopyFile(strInfFileName,sSysDir,FALSE))
    {
    AfxMessageBox("error");
    return TRUE ;
    }
    可以啊!我的系统是XP,在C盘,所以我修改了你的代码。
      

  6.   

    strInfFileName是什么?如果strInfFileName是正确的,那
    strcpy(sSysDir,"d:\\winnt\\system32");
    strcat(sSysDir,"\\mididll.CPL");
    if(!CopyFile(strInfFileName,sSysDir,FALSE))
    {
       AfxMessageBox("error");
       return ;
    }
    是对的
      

  7.   

    或者你可以这样: char SysPath[MAX_PATH];
             GetSystemDirectory(SysPath,MAX_PATH);//直接得到系统目录
    if(!CopyFile((LPCTSTRstrInfFileName,,(LPCTSTR)SysPath,0))
             {
                 AfxMessageBox("error");
                  return ;
              }
      

  8.   

    错了,忘了加文件:
             char SysPath[MAX_PATH];
             GetSystemDirectory(SysPath,MAX_PATH);//直接得到系统目录
             strcat(SysPath,"\\mididll.CPL");
    if(!CopyFile((LPCTSTRstrInfFileName,,(LPCTSTR)SysPath,0))
             {
                 AfxMessageBox("error");
                  return ;
              }
      

  9.   

    To all现在我发现一个问题,只有名字是"mididll.CPL"时不行,改成其它的名字就可以。这是一个很有趣的问题,大家可以试试看。
      

  10.   

    不会吧!我在几台电脑里试都这样子,把文件名改成mididll.cpl和mididll.dll就不行了。我用的OS是过Win2k。