C注册表操作大全文档格式.docx
《C注册表操作大全文档格式.docx》由会员分享,可在线阅读,更多相关《C注册表操作大全文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
}
2.添加键
HKEYhKey;
DWORDdwDisposition;
RegCreateKeyEx(m_hKey,(LPCTSTR)StrKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&
hKey,&
dwDisposition))
m_hKey=hKey;
if(dwDisposition==REG_CREATED_NEW_KEY)
%%2
elseif(dwDisposition==REG_OPENED_EXISTING_KEY)
3.删除键
HKEYSrcKey=m_hKey;
charKeyName[256];
intnRes=0;
if(OpenKey(SrcKey,StrKey))
nRes=FirstEnumKey(KeyName);
while(nRes)
DeleteKey(KeyName);
nRes=NextEnumKey(KeyName);
if(:
RegDeleteKey(SrcKey,StrKey)==ERROR_SUCCESS)
4.枚举第一个键
DWORDdwSize=255;
m_EnumLoop=0;
if
(ERROR_SUCCESS==:
RegEnumKeyEx(m_hKey,m_EnumLoop,%%1,&
dwSize,NULL,NULL,NULL,NULL
))
5.枚举下一个键
m_EnumLoop++;
6.获取DWORD值
CStringStrChildKey(%%1);
DWORD%%1;
DWORDdwSize=255,dwType=REG_DWORD;
RegQueryValueEx(m_hKey,StrChildKey,0,&
dwType,(BYTE
*)(&
%%2),&
dwSize))
7.获取二进制值
DWORDdwSize=255,dwType=REG_BINARY;
8.读取字符串值
CString%%2;
DWORDdwSize=255,dwType=REG_SZ;
charString[256];
*)String,&
%%2=CString(String);
9.写入字符串值
CStringValue;
RegSetValueEx(m_hKey,(LPCTSTR)StrChildKey,0,REG_SZ,(BYTE*)(LPCSTR)Value,strlen(Value)+1))
%%2=CString(Value);
10.写入二进制值
constchar*%%2;
RegSetValueEx(m_hKey,(LPCTSTR)StrChildKey,0,REG_BINARY,(BYTE
*)%%2,strlen(Value)))
11.写入DWORD值
DWORD%%2;
RegSetValueEx(m_hKey,(LPCTSTR)StrChildKey,0,REG_DWORD,(BYTE
*)&
%%2,sizeof(Value)))
12.设置DWORD值
BOOLCRegEdit:
SetDwordValue(HKEYRoot,LPCTSTRStrKey,LPCTSTRStrChildKey,DWORDValue)
m_hKey=m_RootKey=Root;
if(CreateKey(StrKey))
if(WriteDword(StrChildKey,Value))
13.删除值
if(ERROR_SUCCESS==RegDeleteValue(m_hKey,%%1))
14.关闭键
if(m_hKey!
=NULL)
RegCloseKey(m_hKey);
15.列出一个键下所有的子键
//#defineMAX_KEY_LENGTH255
TCHARsubKey[MAX_KEY_LENGTH];
DWORDnumSubKey=0;
DWORDi;
DWORDsizeSubKey;
RegQueryInfoKey(m_hKey,NULL,NULL,NULL,&
numSubKey,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
if(numSubKey)
for(i=0;
i<
numSubKey;
i++)
subKey[0]='
\0'
;
sizeSubKey=MAX_KEY_LENGTH;
RegEnumKeyEx(m_hKey,i,subKey,&
sizeSubKey,NULL,NULL,NULL,NULL);
CString%%1=CString(subKey);
16.列出一个键下所有的值
//#defineMAX_VALUE_NAME16383
TCHARachKey[MAX_KEY_LENGTH];
DWORDcbName;
TCHARachClass[MAX_PATH]=TEXT("
"
);
DWORDcchClassName=MAX_PATH;
DWORDcSubKeys=0;
DWORDcbMaxSubKey;
DWORDcchMaxClass;
DWORDcValues;
DWORDcchMaxValue;
DWORDcbMaxValueData;
DWORDcbSecurityDescriptor;
FILETIMEftLastWriteTime;
DWORDi,retCode;
TCHARachValue[MAX_VALUE_NAME];
DWORDcchValue=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;
cValues;
cchValue=MAX_VALUE_NAME;
achValue[0]='
retCode=RegEnumValue(m_hKey,i,achValue,&
cchValue,NULL,NULL,NULL,NULL);
if(retCode==ERROR_SUCCESS){
CString%%1=CString(achValue);
17.列出一个键下所有的子键和值
retCode=RegQueryInfoKey
if(cSubKeys)
cSubKeys;
cbName=MAX_KEY_LENGTH;
retCode=RegEnumKeyEx(m_hKey,i,achKey,&
cbName,NULL,NULL,NULL,&
if(retCode==ERROR_SUCCESS){
CString%%1=CString(achKey);
cchValue=MAX_VALUE_N