|
|
좌측의 사진은 예시 자료로 사용하기 위하여 만들어본 Registry의 쓰기/읽기/삭제 기능을 가진 MFC 프로그램으로서 다음과 같이 사용 가능하다.
'시작 - 실행 - regedit - 확인'을 한 후에,
1. 입력할 Key 이름 부분에 Key의 이름을 입력 2. 입력할 Child Key 이름에 Child Key의 이름을 입력 ex)Reg_CString / Reg_Int 3. 쓰기 버튼을 클릭 4. 맨 처음 실행시킨 '레지스트리 편집기'에서 F5를 눌러 새로고침을 시켜준 후에 아래의 서브키 추가 되었는지 확인한다. HKEY_CURRENT_USER - Software - My Applications - Registry - Sunmoon - BitEdu
* 읽기의 경우에도 위와 동일 * 삭제의 경우에는 API 명령어 중 RegDeleteKey()를 사용하였기 때문에, 본 프로그램에서는 서브키가 있는 경우 상위 키를 삭제해주지 못 한다. (서브키부터 차례대로 삭제하는 것은 가능하다.) |
*PS. 문서를 올리고 나니 위에 '레지스트리 구조'와 '레지스트리 기본 루트 키'의 이미지 부분이 추가가 되어있음에도 출력이 안되어 이미지 파일을 압축하여 올립니다.
Source Code
BOOL CRegistryApp::InitInstance() { ... ... }
// SetRegistryKey() 에 입력된 텍스트값은 '현재 프로그램'의 최상위 키가 된다. // '현재 프로그램'의 최상위 키일 뿐, 루트가 되는 키는 아니므로 혼동하지 말자. |
void CRegistryDlg::OnBnClickedButton1() //쓰기버튼 UpdateData(); //RegCreateKey(기본 루트 키, 입력받은 Key 이름, 기본루트키 핸들) //WriteProfileString(입력받은 Key 이름, 입력받은 Child Key 이름, 입력받은 Child Key 값) // WriteProfileString() 이라는 WinApp Class에 랩핑된 함수를 끌어다 쓰게 될 경우 // 위에서 설정해 준 SetRegistryKey()에서 설정한 키의 서브키로 들어가게 된다. // HKEY_CURRENT_USER \\ Software \\ My Applications \\ '프로젝트명' \\ '입력한 키 이름' // API 명령어 중 하나인 RegCreateKey를 쓰게 될 경우 HKEY_CURRENT_USER \\ '입력한 키 이름'으로 생성되게 된다. |
void CRegistryDlg::OnBnClickedButton2() //읽기버튼 // GetProfileString(읽어들일 Key 이름, 읽어들일 Child Key 이름, default) // Directory의 경로를 쫓듯 읽어들일 Key 에서, 입력한 Child Key 이름의 값을 갖고온다. // 만약, Child Key가 없다면 default로 준 값이 출력된다. UpdateData(false); // WriteProfileString()가 키를 쓰게 된다면 GetProfileString()은 키를 읽어오는 역할을 한다. |
void CRegistryDlg::OnBnClickedButton3() //삭제버튼 UpdateData(); //RegDeleteKey(기본 루트키, 삭제할 Key) } // RegDeleteKey()는 API에서 제공하는 명령어로서 RegCreateKey()와 같이 구체적인 위치를 입력해주어야만 // 원하는 부분을 삭제할 수 가 있다. 단, 해당 Key에 서브키가 존재하는 경우 삭제가 불가능하며 이 같은 상황에서 // 해당 키를 삭제하고자 한다면 SHDeleteKey()를 이용하여 서브키와 함께 삭제가 가능하다. // * 삭제 부분을 다루고자 한다면 레지스트리 편집기의 '파일 - 내보내기'를 이용하여 레지스트리를 미리 백업해두고 |
Source Code의 'm_keyname'등의 내용은 Edit Control의 변수명임을 참고. |
|