GetPrivateprofilestring没有在当前目录

时间:2017-02-09 15:07:51

标签: c++ winapi

嗯,标题说哪个是我的问题

我的.cpp代码是:

GetPrivateProfileString("Server","MainDns","ServerDns",
    g_DataBaseDns,sizeof(g_DataBaseDns),".\\Server.ini");

当我使用时:

GetPrivateProfileString("Server","MainDns","ServerDns",
    g_DataBaseDns,sizeof(g_DataBaseDns),"..\\Server.ini");

并将ini文件放在后面的文件夹中:正常工作!

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要先调用GetFullPathName()以获取绝对路径,根据GetPrivateProfileString()的文档需要该路径:

  

初始化文件的名称。 如果此参数不包含文件的完整路径,系统将在Windows目录中搜索该文件

例如:

TCHAR sAbsolutePathBuffer[2048] = _T("");
if (GetFullPathName(TEXT("Server.ini"), sizeof(sAbsolutePathBuffer)/sizeof(TCHAR), sAbsolutePathBuffer, NULL))
{
    GetPrivateProfileString(TEXT("Server"), TEXT("MainDns"), TEXT("ServerDns"),
        g_DataBaseDns, sizeof(g_DataBaseDns), sAbsolutePathBuffer);
}