📄 registry.cpp
字号:
// CRegistry implementation
#include "stdafx.h"
#include "registry.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CRegistry::CRegistry()
{}
CRegistry::~CRegistry()
{}
LPCTSTR CRegistry::GetValueString(HKEY RegSection, LPCTSTR RegPath,
LPCTSTR Value, LPCTSTR DefRes)
{
HKEY key;
long res=::RegOpenKeyEx(RegSection, RegPath,0,
KEY_READ, &key);
if (res!=ERROR_SUCCESS)
return DefRes;
char szBuf[4096];
DWORD dwSize=sizeof(szBuf)-1;
res=::RegQueryValueEx(key, Value,NULL, NULL,
(LPBYTE)szBuf, &dwSize);
::RegCloseKey(key);
if (res!=ERROR_SUCCESS)
return DefRes;
m_sResult=szBuf;
return m_sResult;
}
int CRegistry::GetValueInt(HKEY RegSection, LPCTSTR RegPath,
LPCTSTR Value, int DefRes)
{
HKEY key;
long res=::RegOpenKeyEx(RegSection, RegPath,0,
KEY_READ, &key);
if (res!=ERROR_SUCCESS)
return DefRes;
DWORD dwBuf;
DWORD dwSize=sizeof(dwBuf);
res=::RegQueryValueEx(key, Value,NULL, NULL,
(LPBYTE)&dwBuf, &dwSize);
::RegCloseKey(key);
if (res!=ERROR_SUCCESS)
return DefRes;
return (int)dwBuf;
}
BOOL CRegistry::SetValueInt(HKEY RegSection, LPCTSTR RegPath,
LPCTSTR Value, int Val)
{
HKEY key;
long res=::RegOpenKeyEx(RegSection, RegPath,0,
KEY_WRITE, &key);
if (res!=ERROR_SUCCESS)
return FALSE;
DWORD dwBuf=(DWORD)Val;
DWORD dwSize=sizeof(dwBuf);
long ret=::RegSetValueEx(key, Value,0, REG_DWORD,
(LPBYTE)&dwBuf, dwSize);
::RegCloseKey(key);
if (ret!=ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::SetValueString(HKEY RegSection, LPCTSTR RegPath,
LPCTSTR Value, LPCTSTR Str)
{
HKEY key;
long res=::RegOpenKeyEx(RegSection, RegPath,0,
KEY_WRITE, &key);
if (res!=ERROR_SUCCESS)
return FALSE;
DWORD dwSize=_tcslen(Str);
long ret=::RegSetValueEx(key, Value,0, REG_SZ,
(LPBYTE)Str, dwSize);
::RegCloseKey(key);
if (ret!=ERROR_SUCCESS)
return FALSE;
return TRUE;
}
BOOL CRegistry::EnumKeys(HKEY RegSection, LPCTSTR RegPath, CStringArray* pAr)
{
HKEY key;
long res=::RegOpenKeyEx(RegSection, RegPath,0,
KEY_READ, &key);
if (res!=ERROR_SUCCESS)
return FALSE;
LPTSTR str = new TCHAR[4096];
LPTSTR szBuf=str;
LPTSTR pStr=szBuf;
int cbBufLen=4096;
DWORD dwCount=0;
DWORD nOffs=0;
DWORD dwSize=cbBufLen;
DWORD dwTotal=cbBufLen;
while (TRUE)
{
res=::RegEnumKeyEx(key, dwCount, szBuf, &dwSize,
NULL, NULL, NULL, NULL);
if (res==ERROR_NO_MORE_ITEMS) // done
break;
if (res!=ERROR_SUCCESS)
{
::RegCloseKey(key);
delete str;
return FALSE;
}
nOffs=dwSize+1; // for zero
szBuf+=nOffs;
dwTotal-=nOffs;
dwSize=dwTotal;
dwCount++;
}
::RegCloseKey(key);
int nSize=dwCount;
pAr->SetSize(nSize);
while(--nSize>=0)
{
pAr->SetAt(nSize, pStr);
pStr+=_tcslen(pStr);
pStr++;
}
delete str;
return TRUE;
}
BOOL CRegistry::EnumValues(HKEY RegSection, LPCTSTR RegPath, CStringArray* pAr)
{
HKEY key;
long res=::RegOpenKeyEx(RegSection, RegPath,0,
KEY_READ, &key);
if (res!=ERROR_SUCCESS)
return FALSE;
LPTSTR str = new TCHAR[4096];
LPTSTR szBuf=str;
LPTSTR pStr=szBuf;
int cbBufLen=4096;
DWORD dwCount=0;
DWORD nOffs=0;
DWORD dwSize=cbBufLen;
DWORD dwTotal=cbBufLen;
while (TRUE)
{
res=::RegEnumValue(key, dwCount, szBuf, &dwSize,
NULL, NULL, NULL, NULL);
if (res==ERROR_NO_MORE_ITEMS) // done
break;
if (res!=ERROR_SUCCESS)
{
::RegCloseKey(key);
delete str;
return FALSE;
}
nOffs=dwSize+1; // for zero
szBuf+=nOffs;
dwTotal-=nOffs;
dwSize=dwTotal;
dwCount++;
}
::RegCloseKey(key);
int nSize=dwCount;
pAr->SetSize(nSize);
while(--nSize>=0)
{
pAr->SetAt(nSize, pStr);
pStr+=_tcslen(pStr);
pStr++;
}
delete str;
return TRUE;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -