레지스트리 사용예제는 많지만 대부분 API를 이용한 예제인지라 CRegKey 클래스 사용예제를 한번 만들어봤다. 아마 자주 사용하는 예제 중에 하나가 아닐까 싶다. 소스파일도 첨부해둔다.
#include <atlbase.h>
void CCRegKeyExDlg::OnBnClickedButton1()
{
//DWORD 저장
void CCRegKeyExDlg::OnBnClickedButton1()
{
//DWORD 저장
CRegKey RegKey;
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키가 존재하면
{
RegKey.SetDWORDValue(L"DWORD", 1); //DWORD라는 네임으로 "1" 값을 저장.
RegKey.Close(); //오브젝트를 닫는다.
}
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키가 존재하면
{
RegKey.SetDWORDValue(L"DWORD", 1); //DWORD라는 네임으로 "1" 값을 저장.
RegKey.Close(); //오브젝트를 닫는다.
}
}
void CCRegKeyExDlg::OnBnClickedButton2()
{
//String 저장
{
//String 저장
CRegKey RegKey;
//if(RegKey.Create(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //(키 생성을 성공하면)키 생성과 동시에 값생성가능.
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키가 존재하면
{
RegKey.SetStringValue(L"String", L"C:\\Program Files\\"); //String이라는 네임으로 지정한 문자저장 경로를 저장할때는 역슬레쉬 두개사용.
RegKey.Close();
}
}
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키가 존재하면
{
RegKey.SetStringValue(L"String", L"C:\\Program Files\\"); //String이라는 네임으로 지정한 문자저장 경로를 저장할때는 역슬레쉬 두개사용.
RegKey.Close();
}
}
void CCRegKeyExDlg::OnBnClickedButton3()
{
//DWORD 읽기
{
//DWORD 읽기
DWORD dwValue;
DWORD dwSize = 1023;
CRegKey RegKey;
DWORD dwSize = 1023;
CRegKey RegKey;
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키가 존재하면
{
if(RegKey.QueryDWORDValue(L"DWORD", dwValue) == ERROR_SUCCESS) //값이 존재하면 DWORD안에 데이타를 읽어온다.
{
RegKey.Close();//닫는다.
{
if(RegKey.QueryDWORDValue(L"DWORD", dwValue) == ERROR_SUCCESS) //값이 존재하면 DWORD안에 데이타를 읽어온다.
{
RegKey.Close();//닫는다.
CString strValue;
strValue.Format(L"%d", dwValue);
AfxMessageBox(strValue);
}
}
strValue.Format(L"%d", dwValue);
AfxMessageBox(strValue);
}
}
}
void CCRegKeyExDlg::OnBnClickedButton4()
{
//String 읽기
{
//String 읽기
CString strValue;
DWORD dwSize = 1023;
CRegKey RegKey;
DWORD dwSize = 1023;
CRegKey RegKey;
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS)
{
if(RegKey.QueryStringValue(L"String", strValue.GetBuffer(dwSize), &dwSize) == ERROR_SUCCESS) //값(String)이 존재하면 GetBuffer를 사용하여 지정된 크기의 버퍼를 읽어온다.
{
{
if(RegKey.QueryStringValue(L"String", strValue.GetBuffer(dwSize), &dwSize) == ERROR_SUCCESS) //값(String)이 존재하면 GetBuffer를 사용하여 지정된 크기의 버퍼를 읽어온다.
{
RegKey.Close();//닫는다.
strValue.ReleaseBuffer(); //읽어온 버퍼외에 필요없는 바이트를 버린다.
AfxMessageBox(strValue); //최종적으로 리턴받은 strValue 값을 메시지박스에 출력한다.
}
}
AfxMessageBox(strValue); //최종적으로 리턴받은 strValue 값을 메시지박스에 출력한다.
}
}
}
void CCRegKeyExDlg::OnBnClickedButton5()
{
//Value 삭제
{
//Value 삭제
CRegKey RegKey;
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS)
{
RegKey.DeleteValue(L"DWORD");
RegKey.DeleteValue(L"String");
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS)
{
RegKey.DeleteValue(L"DWORD");
RegKey.DeleteValue(L"String");
RegKey.Close();
}
}
}
}
void CCRegKeyExDlg::OnBnClickedButton6()
{
//Key 삭제
{
//Key 삭제
CRegKey RegKey;
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE") == ERROR_SUCCESS)
{
RegKey.DeleteSubKey(L"TestProg");
if(RegKey.Open(HKEY_LOCAL_MACHINE, L"SOFTWARE") == ERROR_SUCCESS)
{
RegKey.DeleteSubKey(L"TestProg");
RegKey.Close();
}
}
}
}
void CCRegKeyExDlg::OnBnClickedButton7()
{
//Key 생성
{
//Key 생성
CRegKey RegKey;
if(RegKey.Create(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키 생성을 성공하면
{
RegKey.Close();
}
}
if(RegKey.Create(HKEY_LOCAL_MACHINE, L"SOFTWARE\\TestProg") == ERROR_SUCCESS) //키 생성을 성공하면
{
RegKey.Close();
}
}