您的位置:首页 > 其它

windows下读写注册表的类

2010-12-28 11:16 253 查看
]#include <winreg.h>
// ===================================================================
// 用法 :
// 1、 打开注册表路径 .
// CMyRegKey regKey1,regKey2,regKey3;
// regKey1.RegOpen(HKEY_LOCAL_MACHINE,_T("Software//Microsoft//Windows//CurrentVersion"));
// regKey2.RegOpen(HKEY_LOCAL_MACHINE,_T("Software//Microsoft//Windows//CurrentVersion"));
// regKey3.RegOpen(HKEY_LOCAL_MACHINE,_T("Software//Microsoft//Windows//CurrentVersion"));
// 2、读取键值并分别传递到编辑控件参数中去:
// regKey1.RegRead(_T("Version"),m_Version);
// regKey2.RegRead(_T("RegisteredOwner"),m_UserID);
// regKey3.RegRead(_T("SystemRoot"),m_Install);
// 3、传递从编辑拦输入的值并写入打开路径的指定键值名中:
// regKey.RegWrite(_T("RegisteredOwner"),m_UserID);
//
class CMyRegKey
{
// Construction
public:
CMyRegKey();
virtual ~CMyRegKey ();
// Attributes
public:
// 定义打开和关闭注册表的成员函数:
LONG RegRegOpen(HKEY hKeyRoot,LPCTSTR pszPath);
void RegRegClose();
// 利用函数重载实现对注册表键值(串值,二进制值,DWORD值 ) 的读和写:
LONG RegRead (LPCTSTR pszKey,DWORD& dwVal);
LONG RegRead (LPCTSTR pszKey,CString& sVal);
LONG RegRead (LPCTSTR pszKey,BYTE *pData,DWORD& dwLength);
LONG RegWrite (LPCTSTR pszKey,DWORD dwVal);
LONG RegWrite (LPCTSTR pszKey,LPCTSTR pszVal);
LONG RegWrite (LPCTSTR pszKey,const BYTE *pData,DWORD dwLength);
protected:
HKEY m_hKey;
CString m_sPath;
};
/////////////////////////////////////////////////////////////////////////////
// CMyRegKey
/////////////////////////////////////////////////////////////////////////////
CMyRegKey:: CMyRegKey()
{
m_hKey = NULL;
}
CMyRegKey:: ~CMyRegKey()
{
RegClose();
}
// 定义打开注册表的函数,RegOpen 函数带有两个参数:指定要访问注册表根结点的 HKEY, 及注
// 册表中信息的全路径。如果给入的路径不存在,则需创建一个新路径。从 RegCreateKeyEx API函数返// 回的 HKEY 作为 m_hKey 存储。
LONG CMyRegKey::RegOpen(HKEY hKeyRoot,LPCTSTR pszPath)
{
DWORD dw;
m_sPath = pszPath;
return RegCreateKeyEx(hKeyRoot,pszPath,0L,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,
&m_hKey,&dw);
}
void CMyRegKey::RegClose()
{
if(m_hKey)
{
RegCloseKey (m_hKey);
m_hKey = NULL;
}
}
LONG CMyRegKey::RegWrite(LPCTSTR pszKey,DWORD dwVal)
{
ASSERT(m_hKey);
ASSERT(pszKey);
ASSERT(pData&&dwLength>0);
ASSERT(AfxIsValidAddress(pData,dwLength,FALSE));
return RegSetValueEx(m_hKey,pszKey,0L,REG_DWORD,(CONST BYTE *)&dwVal,sizeof(DWORD));
}
LONG CMyRegKey::RegWrite(LPCTSTR pszKey,LPCTSTR pszData)
{
ASSERT(m_hKey);
ASSERT(pszKey);
ASSERT(pszData);
ASSERT(pData&&dwLength>0);
ASSERT(AfxIsValidAddress(pszData,strlen(pszData),FALSE));
return RegSetValueEx(m_hKey,pszKey,0L,REG_SZ,(CONST BYTE *)pszData,strlen (pszData)+1);
}
LONG CMyRegKey::RegWrite(LPCTSTR pszKey,const BYTE *pData,DWORD dwLength)
{
ASSERT(m_hKey);
ASSERT(pszKey);
ASSERT(AfxIsValidAddress (pData,dwLength,FALSE));
ASSERT(pData&&dwLength>0);
ASSERT(AfxIsValidAddress(pData,dwLength,FALSE));
return RegSetValueEx(m_hKey,pszKey,0L,REG_BINARY,pData,dwLength);
}
LONG CMyRegKey::RegRead (LPCTSTR pszKey,DWORD& dwVal)
{
ASSERT(m_hKey);
ASSERT(pszKey);
DWORD dwType;
DWORD dwSize = sizeof (DWORD);
DWORD dwDest;
LONG LRet = RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,&dwType,(BYTE *)
&dwDest,&dwSize);
if(LRet==ERROR_SUCCESS)
dwVal = dwDest;
return LRet;
}
LONG CMyRegKey::RegRead (LPCTSTR pszKey,CString& sVal)
{
ASSERT(m_hKey);
ASSERT(pszKey);
DWORD dwType;
DWORD dwSize = 200;
char string[200];
LONG IReturn = RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,&dwType,(BYTE *)
string,&dwSize);
if(IReturn==ERROR_SUCCESS)
sVal = string;
return IReturn;
}
LONG CMyRegKey::RegRead (LPCTSTR pszKey,BYTE * pData,DWORD& dwLen)
{
ASSERT(m_hKey);
ASSERT(pszKey);
DWORD dwType;
return RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,&dwType,pData,&dwLen);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: