티스토리 뷰
레지스트리 문자열 읽고 쓰기
관리자 권한으로 실행되어야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 |
CRegKey RegKey;
LONG lResult;
DWORD dwSize = 10, dwSizeDrive = 5;
// 레지스트리 읽기
lResult = RegKey.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\Stock");
if (ERROR_SUCCESS == lResult)
{
lResult = RegKey.QueryStringValue(TEXT("strDrive"), m_strDrive.GetBuffer(dwSizeDrive), &dwSizeDrive);
if (lResult != ERROR_SUCCESS)
{
AfxMessageBox(TEXT("드라이브명 레지스트리 읽기 실패"));
return;
}
lResult = RegKey.QueryStringValue(TEXT("strDB"), m_strDB.GetBuffer(dwSize), &dwSize);
if (lResult != ERROR_SUCCESS)
{
AfxMessageBox(TEXT("DB값 레지스트리 읽기 실패"));
return;
}
}
else // 읽어오기 실패하면 레지스르리 등록
{
lResult = RegKey.Create(HKEY_LOCAL_MACHINE, "SOFTWARE\\Stock");
if (lResult != ERROR_SUCCESS)
{
AfxMessageBox(TEXT("레지스트리 생성 실패!"));
return;
}
else
{
m_strDrive = TEXT("C");
m_strDB = TEXT("SQLite");
lResult = RegKey.SetStringValue(TEXT("strDrive"), m_strDrive);
if (lResult != ERROR_SUCCESS)
{
AfxMessageBox(TEXT("드라이브 이름 등록 실패!"));
return;
}
lResult = RegKey.SetStringValue(TEXT("strDB"), m_strDB);
if (lResult != ERROR_SUCCESS)
{
AfxMessageBox(TEXT("DB 이름 등록 실패!"));
return;
}
}
}
RegKey.Close(); |
cs |
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Stock
참고>
레지스트리 문자열 저장/읽기는 SetStringValue()/QueryStringValue() 이지만,
문자열 암호화 하고 복호화 할때 에러난다. 그래서 Binary 로 저장SetBinaryValue()/QueryBinaryValue()해야 한다. 파일로 취급할때도 Binary 타입으로 해야 할듯...
Binary 로 취급할때 regedit 로 직접 레지스트리 수동 등록하는 경우, 종류는 REG_BINARY(이진값)으로 해야 한다.