注册表操作
来源:互联网 发布:网络用语奶是什么意思 编辑:程序博客网 时间: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
- 操作注册表
- 注册表操作
- 注册表操作
- 操作注册表
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 操作注册表
- 注册表操作
- 注册表操作
- 注册表操作
- 注册表操作
- 操作注册表
- shell之输出重定向(理解2>&1)
- IO流_throws的方式处理异常
- 关于关系型数据库表的设计
- 设计模式之命令模式的作用
- HTTP状态码列表
- 注册表操作
- react-native(Fetch网络请求数据)
- Future 模式详解(并发使用)
- 走近2050笔记
- Golang Json
- 62.[GIS基础]笛卡尔坐标系
- BZoj 1811 mea(构造并维护不等式)
- HTTP content-type
- CSP课堂零零碎碎的笔记