vs.net2005基于evc++操作注册表

本文介绍了一个用于Windows系统的注册表操作类CEHTRegistry,包括创建键、设置和获取值的方法,并提供了完整的代码实现。

        现在的东西都是存货了,好久没有搞mobile的东西了!今天来博客发现10月份已经过半,却未发一篇文章,有些说不过去了。

        说到windows操作系统,就不得不说注册表,说起注册表就不得不说注册表的读写,这里有一个我想写一个TWeak类的小工具写的注册表操作类。其实所有的windows Tweak类程序都离不开注册操作的,其本质便是通过修改注册表的某些项目来达到优化的目的。

        但是此类程序并不很稳定,而且不同机器的操作系统可能会有不同的效果,也就是说,同一款程序也许可以优化我的系统,但也能让你的系统崩溃。也就是说环境对其影响还是不小的,这个在我写的wmassistant上有所体现。

下面是注册表操作类的代码:

.h文件:

#pragma once

class CEHTRegistry
{
private:
 HKEY m_hKey;
public:
 BOOL EHTCreateKey(HKEY nRootKey, LPCTSTR nSubKey);
 BOOL EHTSetValue(LPCWSTR nValueName, LPCWSTR nValueData, DWORD ncbData);
 BOOL EHTSetValue(LPCWSTR nValueName, DWORD nValueData);
 BOOL EHTGetValue(LPCWSTR nValueName, LPWSTR *nValueData);
 BOOL EHTGetValue(LPCWSTR nValueName, DWORD *nValueData);
public:
 CEHTRegistry(void);
public:
 ~CEHTRegistry(void);
};

.cpp文件:

#include "StdAfx.h"
#include "EHTRegistry.h"

CEHTRegistry::CEHTRegistry(void)
{
 CEHTRegistry::m_hKey = NULL;
}

CEHTRegistry::~CEHTRegistry(void)
{
 if(m_hKey != NULL)
 {
  RegCloseKey(m_hKey);
 }
}

BOOL CEHTRegistry::EHTCreateKey(HKEY nRootKey, LPCTSTR nSubKey)
{
 DWORD dwDisposition = 0;
 if (RegCreateKeyEx(nRootKey,
        nSubKey,
        0, NULL, 0, KEY_ALL_ACCESS, NULL, &m_hKey, &dwDisposition
        ) == ERROR_SUCCESS)
 {
  return TRUE;
 }
 else
 {
  return FALSE;
 }
}

BOOL CEHTRegistry::EHTSetValue(LPCWSTR nValueName, LPCWSTR nValueData, DWORD ncbData)
{
 DWORD dwType = REG_SZ;
 if (RegSetValueEx(m_hKey, nValueName, 0, dwType, (BYTE*)nValueData, ncbData) == ERROR_SUCCESS)
 {
  return RegCloseKey(m_hKey) == ERROR_SUCCESS;
 }
 else
 {
  return FALSE;
 }
}

BOOL CEHTRegistry::EHTSetValue(LPCWSTR nValueName, DWORD nValueData)
{
 DWORD dwType = REG_DWORD;
 if (RegSetValueEx(m_hKey, nValueName, 0, dwType, (BYTE*)(LPCWSTR)&nValueData, sizeof(DWORD)) == ERROR_SUCCESS)
 {
  return RegCloseKey(m_hKey) == ERROR_SUCCESS;
 }
 else
 {
  return FALSE;
 }
}

BOOL CEHTRegistry::EHTGetValue(LPCWSTR nValueName, LPWSTR *nValueData)
{
 DWORD dwType = REG_SZ;
 DWORD dwDataSize = 0;
 if (RegQueryValueEx(m_hKey, nValueName, 0, &dwType,
        (PBYTE)NULL, &dwDataSize
        ) == ERROR_SUCCESS)
 {
  *nValueData = new TCHAR[dwDataSize + 1];
  if (RegQueryValueEx(m_hKey, nValueName, 0, &dwType,
    (PBYTE)nValueData,
    &dwDataSize
    ) == ERROR_SUCCESS)
  {
   return RegCloseKey(m_hKey) == ERROR_SUCCESS; 
  }
  else
  {
   return FALSE;
  }
 }
 else
 {
  return FALSE;
 }
}

BOOL CEHTRegistry::EHTGetValue(LPCWSTR nValueName, DWORD *nValueData)
{
 DWORD dwType = REG_DWORD;
 DWORD dwDataSize = sizeof(DWORD);

 if (RegQueryValueEx(m_hKey, nValueName, 0, &dwType,
   (PBYTE)nValueData, &dwDataSize
  ) == ERROR_SUCCESS)
 {
  return RegCloseKey(m_hKey) == ERROR_SUCCESS; 
 }
 else
 {
  return FALSE;
 }
}

具体的应用我就不说了!哈! 实例化对象,使用,ok! Good Luck!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值