注册表操作
1、删除键值为"Family"的项
HKEY hKEY;
LPCTSTR lpszSubKey;
LONG ret;
LPCTSTR Rgspath="Software\\Microsoft\\Windows\\CurrentVersion\\Run" ;
ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE, &hKEY);
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return;
}
ret = RegDeleteValue(hKEY,_T("Family"));
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return;
}
RegCloseKey(hKEY);
2、判断"ProductType"这个键是否存在
HKEY hKey;
char szProductType[BUFSIZE];
DWORD dwBufLen=BUFSIZE;
LONG lRet;
lRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Control\\ProductOptions",
0, KEY_QUERY_VALUE, &hKey );
if( lRet != ERROR_SUCCESS )
return ;
lRet = RegQueryValueEx( hKey, "ProductType", NULL, NULL,
(LPBYTE) szProductType, &dwBufLen);
if( (lRet != ERROR_SUCCESS) || (dwBufLen > BUFSIZE) )
return ;
RegCloseKey( hKey );
3、以下代码实现了在HKEY_LOCAL_MACHINE的SOFTWARE下打开MyProgram键,如果MyProgram不存在,则创建之,存在则进行查询
HKEY hKEY;
HKEY hKEYResult;
LPCTSTR lpszSubKey;
LPCTSTR lpszValueName;
LONG ret;
DWORD dwType;
DWORD dwSize;
hKEY = HKEY_LOCAL_MACHINE;
lpszSubKey = _T("SOFTWARE\\MyProgram");
ret = RegOpenKeyEx(
hKEY, // 根键
lpszSubKey, // 子键
0, // 必须为0
KEY_ALL_ACCESS, // 访问权限
&hKEYResult); // 保存打开的键的句柄
if (ret != ERROR_SUCCESS) // 若打开失败,则进行创建
{
ret = RegCreateKeyEx(
hKEY, // 根键
lpszSubKey, // 子键
0, // 必须为0
NULL, // 键的class
REG_OPTION_NON_VOLATILE, // 永久保持
KEY_READ|KEY_WRITE, // 访问权限
NULL, // 安全属性
&hKEYResult, // 保存打开的键的句柄
NULL);
if (ret != ERROR_SUCCESS)
{
MessageBox(_T("Create failed!"));
RegCloseKey(hKEYResult); // 使用完记得关闭句柄
return;
}
else
{
lpszValueName = _T("Number");
DWORD dwNumber = 10;
ret = RegSetValueEx(
hKEYResult, // 打开的句柄
lpszValueName, // 键名
0, // 必须为0
REG_DWORD, // 键类型
(CONST BYTE*)&dwNumber, // 需存储的数据
sizeof(DWORD)); // 数据长度
lpszValueName = _T("Date");
LPCTSTR lpszDate = _T("2006/4/29");
ret = RegSetValueEx(
hKEYResult,
lpszValueName,
0,
REG_SZ,
(CONST BYTE*)lpszDate,
MAX_PATH);
RegCloseKey(hKEYResult);
}
}
else // 如打开成功,则进行查询
{
lpszValueName = _T("Number");
dwType = REG_DWORD;
DWORD dwRes = 0;
dwSize = sizeof(DWORD);
ret = RegQueryValueEx(
hKEYResult, // 打开的句柄
lpszValueName, // 查找的键名
0, // 必须为0
&dwType, // 键类型
(BYTE*)&dwRes, // 返回的数据
&dwSize); // 数据长度
if (ret != ERROR_SUCCESS)
{
MessageBox(_T("Create failed!"));
RegCloseKey(hKEYResult);
return;
}
lpszValueName = _T("Date");
dwType = REG_SZ;
dwSize = MAX_PATH;
BYTE *pByteSubKey = new BYTE[MAX_PATH];
ZeroMemory(pByteSubKey, MAX_PATH);
ret = RegQueryValueEx(
hKEYResult,
lpszValueName,
0,
&dwType,
pByteSubKey,
&dwSize);
RegCloseKey(hKEYResult);
delete []pByteSubKey;
pByteSubKey = NULL;
if (ret != ERROR_SUCCESS)
{
MessageBox(_T("Create failed!"));
RegCloseKey(hKEYResult);
return;
}
}