比如程序的路径是在c:\test\test.exe
                  c:\test\config.ini当我在c:\test\目录下执行test.exe时,可以找到目录里的config.ini
但是如果我创建test.exe的快捷方式到桌面.
然后双击这个快捷方式执行就无法找到config.ini了
请问这种情况怎么办?

解决方案 »

  1.   

    GetModuleFilename(NULL...)得到当前程序文件所在路径,然后从中提取出来TCHAR tPath[MAX_PATH];
    memset(tpath,0,sizeof(tPath)*sizeof(TCHAR));
    ::GetModuleFileName(NULL,tPath,MAX_PATH);CString str=tPath;int i=str.ReverseFind("\\");
    if (i!=-1)
    {
    str=str.Mid(0,i);
    }
    str="File Name=" + str + "\\db.udl";
      

  2.   

    建议使用绝对路径而不是相对路径。
    在桌面上,默认工作路径是桌面,必然无法得到config.ini文件了。GETCURRENTPATH得到的可能是工作目录而不是当前模块(dll或exe)所在的目录。
    GetModuleFileName()得到当前模块的全部路径(例如:c:\mydoc\prog.exe ),可以得到模块的路径