Develop
2013.04.23 15:43
[c++] mfc 기반 레지스트리(registry) 컨트롤 예제 코드
조회 수 15383 댓글 2
1. 레지스트리 추가
레지스트리 추가 부분에서는 위에 루트에..
abc라는 이름과 "c:winntsystem32
otepad.exe"의 데이터를 갖는것을 추가하는 예제 코드.
LONG lResult; char buffer[100]; HKEY hKey; DWORD dwDesc; char *path = "c:winntsystem32 otepad.exe"; // 노트 패드 경로 // 레지스트리 열고 RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindowsCurrentVersionRun", 0, KEY_ALL_ACCESS, &hKey); // Set Registry Key & Value lResult = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindowsCurrentVersionRun", 0, buffer, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDesc); if(lResult == ERROR_SUCCESS) { RegSetValueEx(hKey, "abc", 0, REG_SZ, (BYTE*)path, strlen(path)); } //레지스트리 닫고 RegCloseKey(hKey);
2. 레지스트리 삭제
LONG lResult; HKEY hKey; DWORD dwBytes=100; CString str = "abc"; // open Regstry Key lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindowsCurrentVersionRun", 0, KEY_ALL_ACCESS, &hKey); if(lResult != ERROR_SUCCESS) { AfxMessageBox("Register Open Error"); } lResult = RegDeleteValue(hKey, str); // 삭제 if (lResult == ERROR_SUCCESS) AfxMessageBox("레지스터 삭제 성공"); else AfxMessageBox("실패당...ㅠㅠ"); RegCloseKey(hKey);
3. 레지스트리 읽기
LONG lResult; HKEY hKey; DWORD dwType; DWORD dwBytes=100; char buffer[100]; // open Regstry Key lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWAREMicrosoftWindowsCurrentVersionRun", 0, KEY_ALL_ACCESS, &hKey); if(lResult != ERROR_SUCCESS) { AfxMessageBox("Register Open Error"); } // Read Regstry Key lResult=RegQueryValueEx(hKey, "abc", 0, &dwType, (LPBYTE)buffer, &dwBytes); if(lResult == ERROR_SUCCESS) AfxMessageBox(buffer); else AfxMessageBox("Register Read Error"); RegCloseKey(hKey);
4. 서브 키까지 삭제 (recursive)
void SimpleApp::DeleteRegKey() { HKEY m_hKey = NULL; char svSubKeyBuf[MAX_PATH+1]; long m_RetValue = ::RegOpenKeyEx(HKEY_CURRENT_USER, "SoftwareTest",0,KEY_ALL_ACCESS,&m_hKey); if(m_RetValue == ERROR_SUCCESS) // 오픈 성공하면... { RegDeleteKeyRecurse( HKEY_CURRENT_USER, _T("SoftwareTest"), svSubKeyBuf); } return; } int SimpleApp::RegDeleteKeyRecurse(HKEY hKey, LPCTSTR lpSubKey, char *svKeyBuf) { int nCount=0; char svSubKeyBuf[MAX_PATH+1]; HKEY hSubKey; if(RegOpenKeyEx(hKey,lpSubKey,0,KEY_ALL_ACCESS,&hSubKey) !=ERROR_SUCCESS) { return -1; } while(RegEnumKey(hSubKey,nCount,svKeyBuf,MAX_PATH) !=ERROR_NO_MORE_ITEMS) { if(RegDeleteKeyRecurse(hSubKey,svKeyBuf,svSubKeyBuf)==-1) { RegCloseKey(hSubKey); return 1; } nCount++; } RegCloseKey(hSubKey); RegDeleteKey(hKey,lpSubKey); return 0; }
- ?
-
댓글 감사합니다.
근데, nCount가 포인터도 아니고 해서 RegEnumKey 에서 증가시킬 방법이 없을텐데요.
그리고 MSDN에 보면 프로그램에서 증가시키라고 나와있습니다.RegEnumKey(hKey, dwIndex, lpName, cchName);
The application should then increment the dwIndex parameter...[참고] https://msdn.microsoft.com/en-us/us/windows/apps/ms724861
번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|---|
157 | Develop | [java] netty (비동기 이벤트 방식 네트워크 프레임워크) 사용법 #1 (server) 1 | hooni | 2015.01.02 | 2325 |
156 | Develop | [android] 버전 별 앱 알림 설정으로 이동하는 방법 | hooni | 2016.11.28 | 2294 |
155 | Develop | [android] 안드로이드 앱 문서 샘플 | hooni | 2017.07.11 | 2235 |
154 | Develop | [c#] BHO 한샘툴바랑 동현툴바.. | hooni | 2013.04.23 | 2208 |
153 | Develop | [ios] 기본 네비게이션바의 타이틀, back버튼 위치와 속성 변경 | hooni | 2016.05.16 | 2203 |
152 | Develop | [android] SQLiteOpenHelper를 이용한 DBManager | hooni | 2017.06.14 | 2199 |
151 | Develop | [ios] 설정에서 푸시 알림(APNS) on/off 상태 확인 | hooni | 2015.04.28 | 2160 |
150 | Develop | [c#] 툴바 최근 버전(IE6, IE7 두가지 버전) | hooni | 2013.04.23 | 2138 |
149 | Develop | [java] netty (비동기 이벤트 방식 네트워크 프레임워크) 사용법 #2 (client) | hooni | 2015.01.02 | 2135 |
148 | Develop | [ios] Swift 4 Dictionary 사용하기 | hooni | 2018.11.29 | 2135 |
147 | Develop | [php][laravel] 초간단 MacOS에서 Laravel 개발 환경 구축 | hooni | 2017.12.15 | 2130 |
146 | Develop | [swift] UIView에서 subview 찾기 | hooni | 2022.12.09 | 2127 |
nCount++; 은 필요 없습니다.
RegEnumKey 실행마다 알아서 돕니다.