C++, MFC
[C++ / MFC] 레지스트리 값 저장, 불러오기 (RegCreateKeyEx)
dev_drive
2022. 8. 6. 00:13
반응형
레지스트리 키 생성
■ RegCreateKeyEx
레지스트리 키를 만들거나 키가 이미 있는 경우 값을 읽을 수 있도록 키를 여는 함수입니다.
🔽 함수 형식 및 파라미터 참고
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regcreatekeyexw
※ Sample Code
HKEY hKey = NULL;
DWORD dwDisposition;
if (RegCreateKeyEx(HKEY_CURRENT_USER, // 키
_T("SOFTWARE\\Dev"), // 경로
0, NULL,
REG_OPTION_NON_VOLATILE, // 비휘발성, 재부팅해도 값 보존
KEY_WRITE, NULL,
&hKey, &dwDisposition) == ERROR_SUCCESS)
{
// 성공
}
RegCloseKey(hKey);
레지스트리 값 저장
■ RegSetValueEx
레지스트리 키 아래에 지정된 값의 데이터 및 유형을 설정하는 함수입니다.
🔽 함수 형식 및 파라미터 참고
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regsetvalueexw
※ Sample Code
HKEY hKey = NULL;
DWORD dwDisposition;
if (RegCreateKeyEx(HKEY_CURRENT_USER,
_T("SOFTWARE\\Dev"), 0,
NULL, REG_OPTION_NON_VOLATILE,
KEY_WRITE, NULL,
&hKey, &dwDisposition) == ERROR_SUCCESS)
{
// CString 값 저장
CString sValue1 = _T("Value1");
CString sData = _T("data");
if (RegSetValueEx(hKey, sValue1, 0, REG_SZ,
(CONST BYTE*)(LPCTSTR)sData, (DWORD)(_tcslen(sData) + 1) * sizeof(TCHAR)) == ERROR_SUCCESS)
{
// 성공
}
// DWORD 값 저장
CString sValue2 = _T("Value2");
DWORD dData = 5;
if (RegSetValueEx(hKey, sValue2, 0, REG_DWORD,
(CONST BYTE*) & dData, sizeof(dData)) == ERROR_SUCCESS)
{
// 성공
}
}
RegCloseKey(hKey);
레지스트리 값 불러오기
■ RegQueryValueEx
레지스트리 키와 값 이름에 대한 형식 및 데이터를 검색하는 함수입니다..
🔽 함수 형식 및 파라미터 참고
https://docs.microsoft.com/en-us/windows/win32/api/winreg/nf-winreg-regqueryvalueexw
※ Sample Code
HKEY hKey = NULL;
DWORD dwDisposition;
DWORD dwDataSize = 0;
TCHAR* pPath = NULL;
if (RegCreateKeyEx(HKEY_CURRENT_USER,
_T("SOFTWARE\\Dev"), 0,
NULL, REG_OPTION_NON_VOLATILE,
KEY_READ, NULL,
&hKey, &dwDisposition) == ERROR_SUCCESS)
{
// CString 값 불러오기
CString sValue1 = _T("Value1");
if (RegQueryValueEx(hKey, sValue1,
NULL, NULL, NULL, &dwDataSize) == ERROR_SUCCESS)
{
if (dwDataSize)
{
pPath = new TCHAR[dwDataSize];
if (RegQueryValueEx(hKey, sValue1,
NULL, NULL, (LPBYTE)pPath, &dwDataSize) == ERROR_SUCCESS)
{
// 성공
CString sResult;
sResult = pPath;
delete pPath;
}
}
}
// DWORD 값 불러오기
CString sValue2 = _T("Value2");
DWORD dResult;
dwDataSize = sizeof(dResult);
if (RegQueryValueEx(hKey, sValue2,
NULL, NULL, (LPBYTE)&dResult, &dwDataSize) == ERROR_SUCCESS)
{
//성공
}
}
RegCloseKey(hKey);
반응형