11.写入DWORD值
LPCTSTR StrChildKey(%%1);DWORD %%2;
if (ERROR_SUCCESS==::RegSetValueEx( m_hKey,(LPCTSTR)StrChildKey,0,REG_DWORD,(BYTE *)&%%2,sizeof(Value)) )
{
%%3
}
12.设置DWORD值
BOOL CRegEdit::SetDwordValue(HKEY Root, LPCTSTR StrKey, LPCTSTR StrChildKey, DWORD Value)
m_hKey=m_RootKey=Root;
if (CreateKey(StrKey))
{
if (WriteDword(StrChildKey,Value))
{
%%2
}
13.删除值
if (ERROR_SUCCESS==RegDeleteValue(m_hKey,%%1))
{
%%2
}
14.关闭键
if (m_hKey!=NULL)
::RegCloseKey(m_hKey);
15.列出一个键下所有的子键
LPTSTR subKey;
DWORD numSubKey=0;
DWORD i;
DWORD sizeSubKey;
TCHARsubKey[MAX_KEY_LENGTH];
RegQueryInfoKey(m_hKey,NULL,NULL,NULL,&numSubKey,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
if (numSubKey)
{
for (i=0; i
{
subKey[0]=’\0′;
sizeSubKey=MAX_KEY_LENGTH;
RegEnumKeyEx(m_hKey,i,subKey,&sizeSubKey,NULL,NULL,NULL,NULL);
CString %%1=CString(subKey);
}
}
16.列出一个键下所有的值
//#define MAX_KEY_LENGTH 255
//#define MAX_VALUE_NAME 16383
TCHAR achKey[MAX_KEY_LENGTH];
DWORD cbName;
TCHAR achClass[MAX_PATH] = TEXT(“”);
DWORD cchClassName = MAX_PATH;
DWORD cSubKeys=0;
DWORD cbMaxSubKey;
DWORD cchMaxClass;
DWORD cValues;
DWORD cchMaxValue;
DWORD cbMaxValueData;
DWORD cbSecurityDescriptor;
FILETIME ftLastWriteTime;
DWORD i, retCode;
TCHAR achValue[MAX_VALUE_NAME];
DWORD cchValue = MAX_VALUE_NAME;
retCode = RegQueryInfoKey
(m_hKey,achClass,&cchClassName,NULL,&cSubKeys,&cbMaxSubKey,&cchMaxClass,&cValues,&cchMaxValue,&cbMaxValueData,&cbSecurityDesc
riptor,&ftLastWriteTime);
if (cValues)
{
for (i=0, retCode=ERROR_SUCCESS; i
{
cchValue = MAX_VALUE_NAME;
achValue[0] = ‘\0′;
retCode = RegEnumValue(m_hKey, i,achValue,&cchValue,NULL,NULL,NULL,NULL);
if (retCode == ERROR_SUCCESS ){
CString %%1=CString(achValue);
%%2
}
}
}
17.列出一个键下所有的子键和值
//#define MAX_KEY_LENGTH 255
//#define MAX_VALUE_NAME 16383
TCHAR achKey[MAX_KEY_LENGTH];
DWORD cbName;
TCHAR achClass[MAX_PATH] = TEXT(“”);
DWORD cchClassName = MAX_PATH;
DWORD cSubKeys=0;
DWORD cbMaxSubKey;
DWORD cchMaxClass;
DWORD cValues;
DWORD cchMaxValue;
DWORD cbMaxValueData;
DWORD cbSecurityDescriptor;
FILETIME ftLastWriteTime;
DWORD i, retCode;
TCHAR achValue[MAX_VALUE_NAME];
DWORD cchValue = MAX_VALUE_NAME;
retCode = RegQueryInfoKey
(m_hKey,achClass,&cchClassName,NULL,&cSubKeys,&cbMaxSubKey,&cchMaxClass,&cValues,&cchMaxValue,&cbMaxValueData,&cbSecurityDesc
riptor,&ftLastWriteTime);
if (cSubKeys)
{
for (i=0; i
{
cbName = MAX_KEY_LENGTH;
retCode = RegEnumKeyEx(m_hKey,i,achKey,&cbName,NULL,NULL,NULL,&ftLastWriteTime);
if (retCode == ERROR_SUCCESS) {
CString %%1=CString(achKey);
%%2
}
}
}
if (cValues)
{
for (i=0, retCode=ERROR_SUCCESS; i
{
cchValue = MAX_VALUE_NAME;
achValue[0] = ‘\0′;
retCode = RegEnumValue(m_hKey, i,achValue,&cchValue,NULL,NULL,NULL,NULL);
if (retCode == ERROR_SUCCESS ){
CString %%3=CString(achValue);
%%4
}
}
}
18.枚举所有的子键和值
//#include
using std::vector;
struct RegStore{
HKEY hKey;
TCHAR rootKey[MAX_KEY_LENGTH];
CString path;
};
vector cache;
CString m_content,%%1;
bool findFlag;
DWORD i,sizeSubKey,numSubKey=0;
struct RegStore rs;
TCHAR subKey[MAX_KEY_LENGTH];
rs.hKey=hKey;
strcpy(rs.rootKey,rootKey);
rs.path=path;
cache.push_back(rs);
for(int iCt=0;iCt
{
rs=cache.at(iCt);
RegOpenKeyEx(rs.hKey,rs.rootKey,0,KEY_READ,&hKey);
if (RegQueryValueEx(hKey,m_content,NULL,NULL,NULL,NULL)==ERROR_SUCCESS)
{
findFlag=1;
%%1=rs.path;
%%2
}
else
{
RegQueryInfoKey(hKey,NULL,NULL,NULL,&numSubKey,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
if (numSubKey)
{
for (i=0; i
{
subKey[0]=’\0′;
sizeSubKey=MAX_KEY_LENGTH;
RegEnumKeyEx(hKey,i,subKey,&sizeSubKey,NULL,NULL,NULL,NULL);
rs.hKey=hKey;
strcpy(rs.rootKey,rootKey);
rs.path=path+subKey+”\\”;
cache.push_back(rs);
}
}
}
RegCloseKey(hKey);
}