VC++读写配置文件

来源:互联网 发布:购物软件需求分析报告 编辑:程序博客网 时间:2024/06/08 02:07

VC++ 读取配置文件主要用到GetPrivateProfileString()函数,关于该函数的说明见MSDN。本文给出了自己写的小例子,结合WritePrivateProfileString和注册表函数使用。


写入配置文件:

int _tmain(int argc, _TCHAR* argv[]){    wchar_t* pFileName = _T("C:\\testFile.ini");    HKEY hkey;    DWORD dwDisp;    LONG longReg = RegCreateKeyEx(HKEY_LOCAL_MACHINE,                                    _T("SOFTWARE\\Clients\\DG\\FileName"),                                     0,                                    NULL,                                    REG_OPTION_NON_VOLATILE,                                    KEY_WRITE,                                    NULL,                                    &hkey,                                    &dwDisp);    if (longReg != ERROR_SUCCESS)    {        wprintf (_T("Error in creating file key (%d).\n"), longReg);         return 0;     }    longReg = RegSetValueEx  (hkey,_T(""),0,REG_SZ ,(BYTE*)pFileName,(wcslen(pFileName)+1)*sizeof(wchar_t));    if (longReg != ERROR_SUCCESS)    {        wprintf (_T("Error in creating subkey key (%d).\n"), longReg);         return 0;     }        WritePrivateProfileString(_T("Section1"),                               _T("FirstKey"),                               _T("It all worked out OK."),                               pFileName);         WritePrivateProfileString(_T("Section2"),                               _T("SecondKey"),                               _T("By golly, it works!"),                                pFileName);     WritePrivateProfileString(_T("Section3"),                               _T("ThirdKey"),                               _T("Another test..."),                                 pFileName);     return 0;}


读取配置文件

#define bufferSize 128int GetINIinfo(WCHAR* pSection,WCHAR* pKeyName,WCHAR* pKeyBuffer,WCHAR* filePath);int _tmain(int argc, _TCHAR* argv[]){    HKEY hkey=0;    DWORD dwType=0;    wchar_t filePath[bufferSize]={0};    DWORD dwData=bufferSize;    LONG lgReg = RegOpenKeyEx  (HKEY_LOCAL_MACHINE,                                _T("SOFTWARE\\Clients\\DG\\FileName"),                                0,                                KEY_READ,                                &hkey);    if (ERROR_SUCCESS != lgReg)    {       wprintf (_T("Error in opening file key (%d).\n"),lgReg);        return 0;     }        lgReg = RegQueryValueEx(hkey,_T(""),NULL,&dwType,(BYTE*)filePath,&dwData);    if (ERROR_SUCCESS != lgReg)    {        wprintf (_T("Error in reading file key (%d).\n"),lgReg);         return 0;     }    wchar_t buffer[3][bufferSize] = {0};    GetINIinfo(_T("section1"),_T("FirstKey"),buffer[0],filePath);    GetINIinfo(_T("section2"),_T("SecondKey"),buffer[1],filePath);        GetINIinfo(_T("section3"),_T("ThirdKey"),buffer[2],filePath);    for (int i=0;i<3;i++)    {        wprintf(_T("%d::%s\n"),i,buffer[i]);    }    return 0;}int GetINIinfo(WCHAR* pSection,WCHAR* pKeyName,WCHAR* pKeyBuffer,WCHAR* filePath){    DWORD dwNum = GetPrivateProfileString(pSection,                                           pKeyName,                                          _T(""),                                          pKeyBuffer,                                          bufferSize,                                          filePath);    if (0==dwNum || _T("")== pKeyBuffer)    {        DWORD dwError = GetLastError();        wprintf (_T("fail in reading file :error %d\n"),dwError);        return 0;    }    return 1;}


原创粉丝点击