본문 바로가기
개발 이야기/개발자 이야기

윈도우에서의 ini(초기화)파일 읽고 쓰기

by 런던살자 2018. 11. 4.

안녕하세요 마블랑입니다.

 

가끔 컴퓨터 프로그램을 사용하시다보면 이전에 사용하였던 내용들이 그대로 남아있던 적이 있으실거에요

 

예를 들어 동영상플레이어로 동영상을 불러올때 가장 최근에 불러왔던 동영상의 경로가 이미 선택되어 있다던가,

  

설정창에 이전에 설정해놓은 정보가 그대로 남아있는 경우가 있습니다. 

 

그러한 기능을 구현하는데 여러가지 방법이 있지만 그중 하나인 ini파일을 이용해서 구현하는 방법에 대해서 설명하겠습니다.

 

 

 

ini파일은 프로그램 실행시 초기화 정보를 담고 있는 설정파일로 initialization(초기화)의 앞에 ini를 따서 확장자가 붙여진 파일입니다.

 

확장자는 다르지만 텍스트파일로 열어볼수 있기 때문에 보안에는 취약한 점이 있어 기밀한정보는 다른방법을 이용해서 저장하시기 바랍니다.

 

윈도우에서 제공하는 API를 이용하면 ini파일을 다루는데 어렵지 않고 쉽게 사용할수 있습니다.

 

 

 

ini파일을 열어보면 Section과 Key 그리고 Value가 아래처럼 구성되어 있습니다.

 

[Section1]

Key1 = Value

Key2 = Value

Key3 = Value

 

[Section2]

Key1 = Value

Key2 = Value

 

 

하나의 ini파일에는 여러개의 Section이 들어갈수 있습니다.

 

마찬가지로 하나의 Section에는 여러개의 Key가 들어갈수 있는데요 

 

윈도우에서 제공하는 API를 이용해서 ini원하는 값을 저장하고 불러오기 위해서는 Section과 Key를 알아야합니다.

 

 

 

Section과 Key를 알았으면 다음은 윈도우에서 제공하는 API를 알아봅시다

 

먼저 ini파일에 데이터를 저장하기 위해서는 WritePrivateProfileString() 함수를 사용하시면 쉽게 하실수있습니다. 

 

WritePrivateProfileStringA() 함수의 매개변수는 다음과 같습니다. 

 

WritePrivateProfileStringA(

    LPCWSTR lpAppName,

    LPCWSTR lpKeyName,

    LPCWSTR lpString,

    LPCWSTR lpFileName

    );

 

사용 예를 살펴보면

 

WritePrivateProfileString("Server", "IP", "127.0.0.1", "C:\\INI_TEMP\\Config.ini") 와 같이 값을 넣고 실행하면 

 

[Server]

IP = 127.0.0.1

 

다음과 같이 값이 저장되는것을 확인할 수 있습니다.

 

 

 

이제 저장된 데이터를 읽어오는 방법에 대해서 알아오겠습니다

 

INI파일로부터 데이터를 읽어오기 위해서는 GetPrivateProfileStringA() 함수를 사용하시면 됩니다.

 

함수의 원형은 

 

GetPrivateProfileStringA(

    LPCSTR lpAppName,

    LPCSTR lpKeyName,

    LPCSTR lpDefault,

    LPSTR lpReturnedString,

    DWORD nSize,

    LPCSTR lpFileName

    );

 

으로 매개변수는 

 

GetPrivateProfileStringA("Server", "IP", "127.0.0.1",(char*) buffer,1024,"C:\\INI_TEMP\\Config.ini")

 

처럼 입력하고 실행하시면 buffer 변수에 값이 저장되므로 형변환을 하여 사용하시면 되겠습니다.

 

세번째 매개변수 lpDefault에 대해서 설명을 드리면 ini파일의 경로가 잘못되었거나 Section 또는 Key를 잘못입력하여 Value를 읽어올수 없을경우 버퍼에 저장되는 기본값으로 이해하시면 될거 같습니다.

 

 

 

이상 ini파일에 읽고 쓰기를 알아봤는데요. 실제 경험상으로 ini파일을 몰랐던 때 몇명 기능에 대해서 굉장히 어렵게 구현한적이 있던 것을 ini파일을 이용해서 쉽고 빠르게 구현했던 적이있어 프로그램 개발하는데 있어 유용한 정보라고 생각합니다.

 

ini파일의 기능을 잘 이해하고 응용해서 사용하시면 아주 효율적인 프로그래밍이 될거라고 확신합니다.

 

내용이 부족하고 설명이 빈약하지만 읽어주신 모든 분들께 감사인사를 드립니다.

 

궁금한 사항이 있으시면 댓글을 남겨주세요

댓글