c++ 注册表类

来源:互联网 发布:网络主管招聘 青岛沃林 编辑:程序博客网 时间:2024/06/05 03:55

C/C++ code复制代码

#if !defined(AFX_REGISTRY_H__E0610A5D_7166_4D02_9D7E_11AF7CF8E229__INCLUDED_)#define AFX_REGISTRY_H__E0610A5D_7166_4D02_9D7E_11AF7CF8E229__INCLUDED_//#include <winreg.h>/////////////////////////////////////////////////////////////////////////////// CRegistry windowclass CRegistry : public CObject{// Constructionpublic:    CRegistry(HKEY hKey=HKEY_LOCAL_MACHINE);public:    BOOL SaveKey(LPCTSTR lpFileName);    BOOL RestoreKey(LPCTSTR lpFileName);    BOOL Read(LPCTSTR lpValueName, CString* lpVal);    BOOL Read(LPCTSTR lpValueName, DWORD* pdwVal);    BOOL Read(LPCTSTR lpValueName, int* pnVal);    BOOL Write(LPCTSTR lpSubKey, LPCTSTR lpVal);    BOOL Write(LPCTSTR lpSubKey, DWORD dwVal);    BOOL Write(LPCTSTR lpSubKey, int nVal);    BOOL DeleteKey(HKEY hKey, LPCTSTR lpSubKey);    BOOL DeleteValue(LPCTSTR lpValueName);    void Close();    BOOL Open(LPCTSTR lpSubKey);    BOOL CreateKey(LPCTSTR lpSubKey);    virtual ~CRegistry();protected:    HKEY m_hKey;   };/////////////////////////////////////////////////////////////////////////////#endif // !defined(AFX_REGISTRY_H__E0610A5D_7166_4D02_9D7E_11AF7CF8E229__INCLUDED_) 

Registry.cpp

C/C++ code复制代码
// Registry.cpp : implementation file//#include "stdafx.h"#include "Registry.h"/////////////////////////////////////////////////////////////////////////////// CRegistryCRegistry::CRegistry(HKEY hKey){    m_hKey=hKey;}CRegistry::~CRegistry(){    Close();}/////////////////////////////////////////////////////////////////////////////// CRegistry FunctionsBOOL CRegistry::CreateKey(LPCTSTR lpSubKey){    ASSERT(m_hKey);    ASSERT(lpSubKey);    HKEY hKey;    DWORD dw;    long lReturn=RegCreateKeyEx(m_hKey,lpSubKey,0L,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,&dw);       if(lReturn==ERROR_SUCCESS)    {        m_hKey=hKey;        return TRUE;    }       return FALSE;   }BOOL CRegistry::Open(LPCTSTR lpSubKey){    ASSERT(m_hKey);    ASSERT(lpSubKey);       HKEY hKey;    long lReturn=RegOpenKeyEx(m_hKey,lpSubKey,0L,KEY_ALL_ACCESS,&hKey);       if(lReturn==ERROR_SUCCESS)    {        m_hKey=hKey;        return TRUE;    }    return FALSE;   }void CRegistry::Close(){    if(m_hKey)    {        RegCloseKey(m_hKey);        m_hKey=NULL;    }   }BOOL CRegistry::DeleteValue(LPCTSTR lpValueName){    ASSERT(m_hKey);    ASSERT(lpValueName);       long lReturn=RegDeleteValue(m_hKey,lpValueName);       if(lReturn==ERROR_SUCCESS)        return TRUE;    return FALSE;   }BOOL CRegistry::DeleteKey(HKEY hKey, LPCTSTR lpSubKey){    ASSERT(hKey);    ASSERT(lpSubKey);       long lReturn=RegDeleteValue(hKey,lpSubKey);       if(lReturn==ERROR_SUCCESS)        return TRUE;    return FALSE;   }BOOL CRegistry::Write(LPCTSTR lpSubKey, int nVal){    ASSERT(m_hKey);    ASSERT(lpSubKey);       DWORD dwValue;    dwValue=(DWORD)nVal;       long lReturn=RegSetValueEx(m_hKey,lpSubKey,0L,REG_DWORD,(const BYTE *) &dwValue,sizeof(DWORD));          if(lReturn==ERROR_SUCCESS)        return TRUE;       return FALSE;   }BOOL CRegistry::Write(LPCTSTR lpSubKey, DWORD dwVal){    ASSERT(m_hKey);    ASSERT(lpSubKey);       long lReturn=RegSetValueEx(m_hKey,lpSubKey,0L,REG_DWORD,(const BYTE *) &dwVal,sizeof(DWORD));          if(lReturn==ERROR_SUCCESS)        return TRUE;       return FALSE;   }BOOL CRegistry::Write(LPCTSTR lpValueName, LPCTSTR lpValue){    ASSERT(m_hKey);    ASSERT(lpValueName);    ASSERT(lpValue);      long lReturn=RegSetValueEx(m_hKey,lpValueName,0L,REG_SZ,(const BYTE *) lpValue,strlen(lpValue)+1);          if(lReturn==ERROR_SUCCESS)        return TRUE;       return FALSE;   }BOOL CRegistry::Read(LPCTSTR lpValueName, int* pnVal){    ASSERT(m_hKey);    ASSERT(lpValueName);    ASSERT(pnVal);       DWORD dwType;    DWORD dwSize=sizeof(DWORD);    DWORD dwDest;    long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)&dwDest,&dwSize);       if(lReturn==ERROR_SUCCESS)    {        *pnVal=(int)dwDest;        return TRUE;    }    return FALSE;   }BOOL CRegistry::Read(LPCTSTR lpValueName, DWORD* pdwVal){    ASSERT(m_hKey);    ASSERT(lpValueName);    ASSERT(pdwVal);       DWORD dwType;    DWORD dwSize=sizeof(DWORD);    DWORD dwDest;    long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)&dwDest,&dwSize);       if(lReturn==ERROR_SUCCESS)    {        *pdwVal=dwDest;        return TRUE;    }    return FALSE;   }BOOL CRegistry::RestoreKey(LPCTSTR lpFileName){    ASSERT(m_hKey);    ASSERT(lpFileName);       long lReturn=RegRestoreKey(m_hKey,lpFileName,REG_WHOLE_HIVE_VOLATILE);       if(lReturn==ERROR_SUCCESS)        return TRUE;       return FALSE;}BOOL CRegistry::SaveKey(LPCTSTR lpFileName){    ASSERT(m_hKey);    ASSERT(lpFileName);       long lReturn=RegSaveKey(m_hKey,lpFileName,NULL);       if(lReturn==ERROR_SUCCESS)        return TRUE;       return FALSE;}BOOL CRegistry::Read(LPCTSTR lpValueName, CString* lpVal){    ASSERT(m_hKey);    ASSERT(lpValueName);    ASSERT(lpVal);       DWORD dwType;    DWORD dwSize=200;    char szString[2550];       long lReturn=RegQueryValueEx(m_hKey,lpValueName,NULL,&dwType,(BYTE *)szString,&dwSize);       if(lReturn==ERROR_SUCCESS)    {        *lpVal=szString;        return TRUE;    }    return FALSE;   }
原创粉丝点击