实用注册表管理类

15 篇文章 0 订阅
7 篇文章 0 订阅
#pragma once

class Registry
{
public:
	Registry(HKEY root, const std::wstring& path);
	~Registry();
	bool Create();
	bool CreateKey(const std::wstring& subKey);
	std::wstring QueryValue(const std::wstring& key);
	DWORD QuerydwordValue(const std::wstring& key);
	bool SetValue(const std::wstring& key, const std::wstring& value);
	bool SetdwordValue(const std::wstring& key, DWORD value);
	bool DeleteKey(const std::wstring& key);
	bool DeleteValue(const std::wstring& key);
	bool Delete();

private:
	HKEY			root_;
	std::wstring	path_;
	HKEY			hkey_;
};
#include "StdAfx.h"
#include "registry.h"

Registry::Registry(HKEY root, const std::wstring& path)
	: hkey_(NULL), root_(root), path_(path) {}

Registry::~Registry() {}

bool Registry::Create()
{
	DWORD dwState = 0;
	LONG lRet = ::RegCreateKeyEx(root_, path_.c_str(), 0, NULL, 0, KEY_ALL_ACCESS, NULL, &hkey_, &dwState);
	if(lRet == ERROR_SUCCESS) {
		::RegCloseKey(hkey_);
	}
	return (lRet == ERROR_SUCCESS);
}

bool Registry::CreateKey(const std::wstring& subKey)
{
	DWORD dwState = 0;
	LONG lRet = ::RegCreateKeyEx(root_, path_.c_str(), 0, NULL, 0, 0, NULL, &hkey_, &dwState);
	if(lRet == ERROR_SUCCESS) {
		::RegCloseKey(hkey_);
	}
	return (lRet == ERROR_SUCCESS);
}

std::wstring Registry::QueryValue(const std::wstring& key)
{
	LONG lRet = ::RegOpenKeyEx(root_, path_.c_str(), 0, KEY_READ, &hkey_);
	TCHAR tszVal[MAX_PATH] = { 0 };
	if (lRet == ERROR_SUCCESS) {
		DWORD dwType, dwSize;
		dwSize = sizeof (tszVal);
		::RegQueryValueEx(hkey_, key.c_str(), 0, &dwType, (LPBYTE)tszVal, &dwSize);
		::RegCloseKey(hkey_);
	}
	return tszVal;
}

DWORD Registry::QuerydwordValue(const std::wstring& key)
{
	DWORD dwValue = 0, dwType = 0, dwSize = sizeof(DWORD);
	LONG lRet = ::RegOpenKeyEx(root_, path_.c_str(), 0, KEY_READ, &hkey_);
	if (lRet == ERROR_SUCCESS) {
		::RegQueryValueEx(hkey_, key.c_str(), NULL, &dwType, reinterpret_cast<LPBYTE>(&dwValue), &dwSize);
		::RegCloseKey(hkey_);
	}
	return dwValue;
}

bool Registry::SetValue(const std::wstring& key, const std::wstring& value)
{
	LONG lRet = ::RegOpenKeyEx(root_, path_.c_str(), 0, KEY_WRITE, &hkey_);
	if (lRet == ERROR_SUCCESS) {
		lRet = ::RegSetValueEx(hkey_, key.c_str(), 0, REG_SZ, (LPBYTE)value.c_str(), sizeof(TCHAR) * value.size());
		::RegCloseKey(hkey_);
	}
	return (lRet == ERROR_SUCCESS);
}

bool Registry::SetdwordValue(const std::wstring& key, DWORD value)
{
	LONG lRet = ::RegOpenKeyEx(root_, path_.c_str(), 0, KEY_WRITE, &hkey_);
	if (lRet == ERROR_SUCCESS) {
		lRet = ::RegSetValueEx(hkey_, key.c_str(), 0, REG_DWORD, (LPBYTE)&value, sizeof(DWORD));
		::RegCloseKey(hkey_);
	}
	return (lRet == ERROR_SUCCESS);
}

bool Registry::DeleteKey(const std::wstring& key)
{
	return (::RegDeleteKey(root_, key.c_str()) == ERROR_SUCCESS);
}

bool Registry::DeleteValue(const std::wstring& key)
{
	LONG lRet = ::RegOpenKeyEx(root_, path_.c_str(), 0, KEY_WRITE, &hkey_);
	if (lRet == ERROR_SUCCESS) {
		lRet = ::RegDeleteValue(hkey_, key.c_str());
		::RegCloseKey(hkey_);
	}
	return (lRet == ERROR_SUCCESS);
}

bool Registry::Delete()
{
	return (::RegDeleteKey(root_, path_.c_str()) == ERROR_SUCCESS);
}


C 注册表读写是一种用于管理和操作Windows操作系统注册表注册表是Windows操作系统的核心组件之一,用于存储系统配置和应用程序设置的信息。 C 注册表读写提供了一组方法和属性,用于读取、写入、修改和删除注册表中的键值。通过使用该,可以轻松地访问和管理注册表中的数据。该提供了以下常用的方法: 1. OpenKey:打开一个指定路径的注册表键。 2. CreateKey:创建一个指定路径的注册表键。 3. GetValue:获取指定路径下的键值。 4. SetValue:设置指定路径下的键值。 5. DeleteKey:删除指定路径下的注册表键。 6. DeleteValue:删除指定路径下的键值。 使用C 注册表读写,可以方便地对注册表进行读写操作,从而实现对应用程序设置和系统配置的管理。比如,可以使用该来读取和修改系统的默认浏览器设置、时间和日期格式、桌面背景等。同时,也可以使用该来读取和修改应用程序的配置信息,如保存上一次打开的文件路径、用户界面偏好设置等。 需要注意的是,对注册表的读写操作需要管理员权限,因为注册表是系统关键信息的存储位置。在使用该时,需要确保程序运行在具有管理员权限的账户下,否则可能会导致访问被拒绝的错误。 总之,C 注册表读写是一个很实用的工具,可以帮助开发人员轻松地读取和写入注册表中的数据,实现对系统和应用程序设置的管理
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值