现在的东西都是存货了,好久没有搞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!!!
本文介绍了一个用于Windows系统的注册表操作类CEHTRegistry,包括创建键、设置和获取值的方法,并提供了完整的代码实现。

395

被折叠的 条评论
为什么被折叠?



