注册表操作

来源:互联网 发布:网络用语奶是什么意思 编辑:程序博客网 时间:2024/06/08 14:26
#pragma onceconst UINT BUFFER_LENGTH = 1024;const UINT BUFFER_LENGTH_BINARY = 3;enum err {   ERR_OPENREGKEY, ERR_SETREGVALUE, ERR_QUERYVALUE, ERR_DELETEVALUE, ERR_SUBKEYEXIST, ERR_CREATESUBKEY, ERR_DELETESUBKEY,   ERR_SUCCESS, ERR_KEYNOTEXIST};enum hkey{ DHKEY_CLASSES_ROOT = 0x80000000, DHKEY_CURRENT_USER = 0x80000001, DHKEY_LOCAL_MACHINE = 0x80000002, DHKEY_USERS = 0x80000003, DHKEY_CURRENT_CONFIG = 0x80000005};class CRegeditOp{public: CRegeditOp(); virtual ~CRegeditOp();public: //Set or modify the type and value of the key err SetStrValue(HKEY hMainKey, CString szSubKey, CString szItem,  CString szValue); //query the value and the type of the key err GetStrValue(HKEY hMainKey, CString szSubKey, CString szItem, CString& szValue, DWORD& strType,DWORD& length); //delete the key value err DeleteStrValue(HKEY hMainKey, CString szSubKey, CString szItem); //create a sub key err AddSubKey(HKEY hMainKey, CString szSubKey); //delete a sub key err DeleteSubKey(HKEY hMainKey, CString szSubKey); //check the specified key path wheather exist err CheckRegeditFoler(HKEY hMainKey, CString szSubKey);};实现文件#include "StdAfx.h"#include "RegeditOp.h"#include "./regeditop.h"#include "MyFile.h"CRegeditOp::CRegeditOp(void){}CRegeditOp::~CRegeditOp(void){}/*************************************************************************** Name    : SetStrValue* Function: set the value of the stecial key* Input   :       hMainKey:Handle to an open key,It is returned by RegOpenKeyEx or RegCreateKeyEx.it can be one of the follows predefined keys           HKEY_CLASSES_ROOT     HKEY_CURRENT_USER     HKEY_LOCAL_MACHINE     HKEY_USERS   szSubKey:The path of the key which is going to be setted.   szItem:The name of the key which is going to be setted   szValue:The value of the key which is going to be setted * Output  : * In&Out  :* Return  : IF success, return ERR_SUCCESS(7);if open key failed, return  ERR_OPENREGKEY(0);If set value failed, return ERR_SETREGVALUE(1)* Others  : * Date        Version       People Name     Content of modify* -----------------------------------------------------------* 2008-8-4    V1.0         jet             Create* -----------------------------------------------------------**************************************************************************/err CRegeditOp::SetStrValue(HKEY hMainKey, CString szSubKey, CString szItem,  CString szValue){ HKEY hRsltKey; //=========================================打开注册表 long lRslt = RegOpenKeyEx(hMainKey, szSubKey, 0,KEY_SET_VALUE,&hRsltKey); if (lRslt != ERROR_SUCCESS) {     return ERR_OPENREGKEY; } //===================================设置注册表值 lRslt = RegSetValueEx(hRsltKey,        szItem,        NULL,        REG_SZ,       LPBYTE(szValue.GetBuffer(szValue.GetLength())),        szValue.GetLength()); if (lRslt != ERROR_SUCCESS) {     return ERR_SETREGVALUE; } //============================================关闭注册表键 if (hMainKey) {  RegCloseKey(hMainKey); } if (hRsltKey) {  RegCloseKey(hRsltKey); } return ERR_SUCCESS;}/*************************************************************************** Name    : GetStrValue* Function: Query the key value and type of the specify key.* Input   :       hMainKey:Handle to an open key,It is returned by RegOpenKeyEx or RegCreateKeyEx.it can be one of the follows predefined keys           HKEY_CLASSES_ROOT     HKEY_CURRENT_USER     HKEY_LOCAL_MACHINE     HKEY_USERS   szSubKey:The path of the key which is going to be got.   szItem:The name of the key which is going to be got.      * Output  : szValue:A string parameter that receives the value's #   strType:A DWORD parameter that receives the value's type* In&Out  : length:[IN]  A DWORD parameter that spcify the value's length,if the length is smaller than the the real key length, the keyValue cann't be ruturn.          [OUT] A DWORD parameter that receives the value's length* Return  : IF success, return ERR_SUCCESS(7);if open key failed, return  ERR_OPENREGKEY(0);If set value failed, return ERR_SETREGVALUE(1)* Others  : * Date        Version       People Name     Content of modify* -----------------------------------------------------------* 2008-8-4    V1.0         jet             Create* -----------------------------------------------------------**************************************************************************/err CRegeditOp::GetStrValue(HKEY hMainKey, CString szSubKey, CString szItem, CString& szValue, DWORD &strType,DWORD& length){   HKEY hRsltKey; //打开注册表 if (ERROR_SUCCESS != RegOpenKeyEx(hMainKey, szSubKey,0,KEY_READ, &hRsltKey)) {     return ERR_OPENREGKEY; } LPBYTE lp# = new BYTE[length]; memset(lp#,0,length); //查询注册表项值 long lRslt = RegQueryValueEx(hRsltKey, szItem, 0, &strType, lp#,&length); szValue = (CString)lp#;   if (lRslt != ERROR_SUCCESS) {     delete [] lp#;  return ERR_QUERYVALUE; }  delete [] lp#; //关闭打开的键 if (hMainKey) {  RegCloseKey(hMainKey); } if (hRsltKey) {  RegCloseKey(hRsltKey); } return ERR_SUCCESS;}/*************************************************************************** Name    : AddSubKey* Function: Add a new key* Input   :       hMainKey:Handle to an open key,It is returned by RegOpenKeyEx or RegCreateKeyEx.it can be one of the follows predefined keys           HKEY_CLASSES_ROOT     HKEY_CURRENT_USER     HKEY_LOCAL_MACHINE     HKEY_USERS   szSubKey:The path of the key which is going to be created.      * Output  : * In&Out  : * Return  : If success, return ERR_SUCCESS(7);if the key was exist, return ERR_SUBKEYEXIST(4);if create key failed, return  ERR_CREATESUBKEY(5)* Others  : * Date        Version       People Name     Content of modify* -----------------------------------------------------------* 2008-8-4    V1.0         jet             Create* -----------------------------------------------------------**************************************************************************/err CRegeditOp::AddSubKey(HKEY hMainKey, CString szSubKey){ HKEY hRsltKey; //================================判断要增加的注册表子键是否已存在 //LONG iReturn = RegOpenKeyEx(hMainKey, szSubKey, 0,0,&hRsltKey); if (ERROR_SUCCESS == RegOpenKeyEx(hMainKey, szSubKey,0,KEY_SET_VALUE,&hRsltKey)) {    return ERR_SUBKEYEXIST; } //==================================如果不存在,则增加此子键 long lRslt = RegCreateKeyEx(hMainKey, szSubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_CREATE_SUB_KEY ,NULL, &hRsltKey,NULL); //long lRslt = RegCreateKey(hMainKey,szSubKey, &hRsltKey); if (lRslt != ERROR_SUCCESS)  {    return ERR_CREATESUBKEY;   } //===============================关闭打开的注册表键句柄 if(hMainKey) {  RegCloseKey(hMainKey); } if (hRsltKey)  {  RegCloseKey(hRsltKey); } return ERR_SUCCESS;} /*************************************************************************** Name    : DeleteStrValue* Function: Delete the value of a key* Input   :       hMainKey:Handle to an open key,It is returned by RegOpenKeyEx or RegCreateKeyEx.it can be one of the follows predefined keys           HKEY_CLASSES_ROOT     HKEY_CURRENT_USER     HKEY_LOCAL_MACHINE     HKEY_USERS   szSubKey:The path of the key which value is going to be deleted.   szItem:The key which to be deleted.      * Output  : * In&Out  : * Return  : If success, return ERR_SUCCESS(7);if open key failed, return ERR_OPENREGKEY(0);if delete key value failed, return  ERR_DELETEVALUE(3)* Others  : * Date        Version       People Name     Content of modify* -----------------------------------------------------------* 2008-8-4    V1.0         jet             Create* -----------------------------------------------------------**************************************************************************/err CRegeditOp::DeleteStrValue(HKEY hMainKey, CString szSubKey, CString szItem){ HKEY hRsltKey; //打开注册表 long lRslt = RegOpenKeyEx(hMainKey, szSubKey,0,KEY_CREATE_SUB_KEY, &hRsltKey); if (lRslt != ERROR_SUCCESS) {    return ERR_OPENREGKEY; } //删除注册表项 lRslt = RegDeleteValue(hRsltKey, szItem); if (lRslt != ERROR_SUCCESS) {    return ERR_DELETEVALUE; } return ERR_SUCCESS;}/*************************************************************************** Name    : DeleteSubKey* Function: Delete a key* Input   :       hMainKey:Handle to an open key,It is returned by RegOpenKeyEx or RegCreateKeyEx.it can be one of the follows predefined keys           HKEY_CLASSES_ROOT     HKEY_CURRENT_USER     HKEY_LOCAL_MACHINE     HKEY_USERS   szSubKey:The path of the key which is going to be deleted.    * Output  : * In&Out  : * Return  : If success, return ERR_SUCCESS(7);if delete key failed, return  ERR_DELETESUBKEY(3)* Others  : * Date        Version       People Name     Content of modify* -----------------------------------------------------------* 2008-8-4    V1.0         jet             Create* -----------------------------------------------------------**************************************************************************/err CRegeditOp::DeleteSubKey(HKEY hMainKey, CString szSubKey){ //=================================删除子键 long lRslt = RegDeleteKey(hMainKey, szSubKey); if (lRslt)  {    return ERR_KEYNOTEXIST; } //关闭打开的键 if (hMainKey) {  RegCloseKey(hMainKey); } return ERR_SUCCESS;}/*************************************************************************** Name    : CheckRegeditFoler* Function: Check wheathe the specified Key path is exist.* Input   :       hMainKey:Handle to an open key,It is returned by RegOpenKeyEx or RegCreateKeyEx.it can be one of the follows predefined keys           HKEY_CLASSES_ROOT     HKEY_CURRENT_USER     HKEY_LOCAL_MACHINE     HKEY_USERS   szSubKey:The path of the key which is going to be checked.    * Output  : * In&Out  : * Return  : If success, return ERR_SUCCESS(7);if delete key failed, return  ERR_DELETESUBKEY(3)* Others  : * Date        Version       People Name     Content of modify* -----------------------------------------------------------* 2008-8-4    V1.0         jet             Create* -----------------------------------------------------------**************************************************************************/err CRegeditOp::CheckRegeditFoler(HKEY hMainKey, CString szSubKey){ HKEY hRsltKey; //打开注册表 if (ERROR_SUCCESS == RegOpenKeyEx(hMainKey, szSubKey,0,KEY_READ, &hRsltKey)) {    if(hMainKey)  {   RegCloseKey(hMainKey);  }  if (hRsltKey)   {   RegCloseKey(hRsltKey);  }  return ERR_SUCCESS; } else {  return FALSE; }}

0 0
原创粉丝点击