사용 계기
- Login 시 서버에 접속 전에 PC에서 사용자 인증을 1차적으로 거치기 위해서 ini파일에 ID, Password를 저장 후 인증하도록 함.
- 개인 PC의 보안 접속을 위해 PC에서 미리 인증된 ID로만 접속 하도록 하기 위함.
1.ini 파일
우선 ini 파일이 무엇인지 알아야 한다.
- 정의
INI(Initialization) 파일 포맷은 설정 파일에 대한 de facto 표준이다. INI 파일은 단순 구조의 텍스트 파일로 이루어져 있다. 보통 마이크로소프트 윈도와 연결되어 있지만 다른 운영 체제에서도 사용할 수 있다. "INI 파일"이라는 이름은 ".INI"라는 파일 확장자가 따라오지만, ".CFG", ".conf", ".TXT" 등의 다른 확장자를 사용하기도 한다.
- 형식
- 매개 변수
INI 파일에 포함된 기본 요소는 매개 변수이다. 각 변수는 이름과 값을 가지고 있으며 등호로 이를 구분한다. "이름"은 등호 왼쪽에 적는다.
이름(키) = 값
- 섹션
매개 변수는 임의의 이름으로 지정된 여러 개의 섹션으로 구분할 수 있다. 이 섹션 이름은 괄호 ([, ])로 구분한다.
[섹션]
- 주석
세미콜론 (;)은 주석의 시작을 가리킨다. 줄이 끝날 때까지 주석을 계속 적을 수 있다. 세미콜론 사이의 모든 항목과 줄의 끝 부분까지의 내용은 프로그램의 설정값에서 무시한다.
; 주석
가상의 프로그램(실제로 존재하지는 않음)을 위한 INI 파일의 예는 다음과 같다. 두 개의 섹션을 가지고 있으며, 그 가운데 한 섹션은 소프트웨어의 소유자에 대한 것이며, 나머지 하나는 종업원 명부 데이터베이스 연결에 대한 것이다. 또, 파일을 마지막으로 수정한 날짜,도메인 이름 대신 IP 주소가 쓰인 까닭에 대해 주석을 적고 있다.
; 홍길동이 2001년 4월 1일에 마지막으로 수정하였음
[owner]
name=홍길동
organization=최고의 제품
[database]
server=192.0.2.62 ; 네트워크 이름 변환이 동작하지 않는 경우 IP 주소를 사용한다
port=143
file="payroll.dat"
출처 위키백과 : https://ko.wikipedia.org/wiki/INI_%ED%8C%8C%EC%9D%BC
1-1. WritePrivateProfileString()
BOOL WINAPI WritePrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpString,
__in LPCTSTR lpFileName
);
ini파일에 data를 쓰기 위한 함수
[Parameter]
- lpAppName [in]
어떤 섹션에 기록될것인지 입력합니다.
- lpKeyName [in]
어떤 키에 기록될것인지 입력합니다. 만약 NULL일때는 섹션 내의 모든 정보를 삭제합니다.
- lpString [in]
키에 들어가는 값을 입력합니다. 꼭 NULL종료 문자열이여야 합니다. 정수, 실수등의 값은 문자열로 바꾸어서 넣어주어야 하고, 만약 NULL일때는 키를 삭제합니다.
- lpFileName [in]
어떤 파일에 기록할지 입력합니다. 경로를 지정하지 않으면, 윈도우즈 디렉토리 (보통 C:\Windows\)에 생성됨.
2-2.GetPrivateProfileString()
DWORD WINAPI GetPrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpDefault,
__out LPTSTR lpReturnedString,
__in DWORD nSize,
__in LPCTSTR lpFileName
);
[Parameter]
어떤 섹션을 읽을지 지정합니다. .
어떤 키를 읽을지 지정합니다.
문자열 버퍼의 주소를 줍니다.
lpReturnedString의 사이즈를 줍니다.
어떤 ini에서 읽을지 지정합니다.
적용
BOOL CALLBACK InfoDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
char str[100] = "test1234";
SYSTEMTIME st;
switch(uMsg){
case WM_INITDIALOG:
WritePrivateProfileString("LOGIN", "ID","test", "c:\\login.ini");
WritePrivateProfileString("LOGIN", "PASSWORD","1234","c:\\login.ini");
return TRUE;
case WM_CLOSE:
EndDialog(hDlg, NULL);
}
return FALSE;
}
- Test 결과 파일이 없는 상태에서도 WritePrivateProfileString() 를 사용하면 파일 생성 및 data 입력이 가능 하다.
- 경로를 적지 않을 경우 "c:\windows" 폴더에 생성됨을 확인.