Develop
2013.04.23 15:43
[c++] mfc 기반 레지스트리(registry) 컨트롤 예제 코드
조회 수 17190 댓글 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
| 번호 | 분류 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|---|
| 541 | Develop | [c] 가변인자 함수(printf와 같은..) | hooni | 2013.04.23 | 8415 |
| 540 | Develop |
[c#] BHO 한샘툴바랑 동현툴바..
|
hooni | 2013.04.23 | 2208 |
| 539 | Develop | [c++] Win32API를 이용한 ExitWindowsEx 사용한 예제코드 | hooni | 2013.04.23 | 9313 |
| 538 | Develop |
[c#] mfc 기반의 웹서비스 서버/클라이언트 샘플과 예제 소스
|
hooni | 2013.04.23 | 2073 |
| 537 | Develop |
[c] 텍스트 파일(로그)을 정해진 라인 단위로 쪼개주는 코드
|
hooni | 2013.04.23 | 8725 |
| 536 | Develop |
[c] 네트워크 트래릭 모니터링.. 졸업작품..
2 |
hooni | 2013.04.23 | 13402 |
| 535 | Develop |
[c#] MS IE(Internet Explorer) 툴바 버튼 예제 2003/2005 두가지 버전
|
hooni | 2013.04.23 | 2090 |
| 534 | Develop |
[c#] BFilter 툴바 소스 코드 ㅎㅎ
|
hooni | 2013.04.23 | 8745 |
| 533 | Develop |
[c++] mfc로 만든 현재 디렉토리 읽어오기/세팅하기 (GetCurrentDirectory/SetCurrentDirectory)
|
hooni | 2013.04.23 | 9493 |
| 532 | Develop | 다운 받아서 테스트 해볼것.. | hooni | 2013.04.23 | 10291 |
| 531 | Develop |
[c++] mfc 기반 멀티수납(wall)시스템 소스와 실행파일
|
hooni | 2013.04.23 | 8396 |
| » | Develop | [c++] mfc 기반 레지스트리(registry) 컨트롤 예제 코드 2 | hooni | 2013.04.23 | 17190 |
nCount++; 은 필요 없습니다.
RegEnumKey 실행마다 알아서 돕니다.