这是源程序,我将软件安装在 C:\123\ 然后运行,大部分电脑都能在C:\123\下生成 record与temp二个文件夹,但有些电脑生成这二个文件夹却跑到其它路径去了,好像有一台是在 我的文档 下,请问这是何原因,我怎么做才能保证让文件夹生成在与 主程序文件 一个文件夹下呢?是否要将
CreateDirectory("record",&sa);  //新建 record 文件夹
改成
CreateDirectory(".\\record",&sa);  //新建 record 文件夹
因为这是偶然有的电脑会出现,所以我也不好测试,还望高手释疑!谢谢!
if(TRUE!=FileExists("record", TRUE)) //检查是否存在 record
{
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = FALSE;
CreateDirectory("record",&sa);  //新建 record 文件夹
} if(TRUE!=FileExists("temp", TRUE)) //检查是否存在 temp
{
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = FALSE;
CreateDirectory("temp",&sa);  //新建 temp 文件夹
}

解决方案 »

  1.   

    要么CreateDirectory的第一个参数使用完全路径,
    要么先SetCurrentDirectory设置工作目录到c:\123
      

  2.   

    CreateDirectory设置完整路径,不然当前目录可能会因为别的操作发生改变,
    可以用GetModuleFileName,获得当前exe路径,然后拼接你目录的的完整路径,然后再CreateDirectory
      

  3.   

    先设置当前目录就可以了SetCurrentDirectory
      

  4.   

    可以在软件初始化时,先用GetCurrentDirectory(ExePath);//获得当前软件的路径然后在建立文件夹时加入全路径
    CString FolderName;
    FolderName.Format(ExePath+"\\record");
    CreateDirectory(FolderName,&sa); 或调用SetCurrentDirectory(ExePath);//设置当前路径为软件路径
    SetCurrentDirectory(ExePath);
    CreateDirectory("record",&sa);