关于写注册表的问题! hKeyRoot=?pszPath=??//以上两个值都可以自己设置的! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以下是这个类的完整代码!#include <winreg.h>class CRegistry:public CObject{public: CRegistry(); virtual ~CRegistry(); struct REGINFO { LONG IMessage; DWORD dwType; DWORD dwSize; }m_Info;public: HKEY GetRootKey(); //获得当前的根键的设置; void SetRootKey(HKEY hBootHey); //用来设置当前的根键; BOOL VerifyKey(HKEY hKeyRoot,LPCTSTR pszPath);//检测键是否存在; BOOL VerifyValue(LPCTSTR pszValue); //检测键值是否存在; BOOL CreateKey(HKEY hKeyRoot,LPCTSTR pszPath);//用来创建键值; BOOL Open(HKEY hKeyRoot,LPCTSTR pszPath); //打开注册表; void Close(); //关闭注册表; BOOL DeleteValue(LPCTSTR pszValue); //删除键值; BOOL DeleteValueKey(HKEY hKeyRoot,LPCTSTR pszPath);//删除键; BOOL WriteStr(LPCTSTR pszKey,LPCTSTR pszVal); //读当前值的内容; BOOL WriteDword(LPCTSTR pszKey,DWORD* lpData); BOOL ReadStr(LPCTSTR pszKey,CString& sValue); //写当前值的内容; BOOL ReadDWord(LPCTSTR pszKey,DWORD* dValue);protected: HKEY m_hKey; CString m_sPath;};CRegistry::CRegistry(){ //默认的根键为HKEY_LOCAL_MACHINE; m_hKey=HKEY_LOCAL_MACHINE;}CRegistry::~CRegistry(){ //关闭注册表 Close(); }void CRegistry::SetRootKey(HKEY hBootKey){ //用来设置键根 m_hKey=hBootKey;}HKEY CRegistry::GetRootKey(){ //得到键根 return m_hKey;}//以下是判定所给的键是否存在BOOL CRegistry::VerifyKey(HKEY hKeyRoot,LPCTSTR pszPath){ ASSERT(hKeyRoot); ASSERT(pszPath); LONG ReturnValue=RegOpenKeyEx(hKeyRoot,pszPath,0L, KEY_ALL_ACCESS,&m_hKey);//试图打开键 if(ReturnValue==ERROR_SUCCESS)//返回ERROR_SUCCESS表示成功 return TRUE; m_Info.IMessage=ReturnValue; m_Info.dwSize=0L; m_Info.dwType=0L; return FALSE; }//以下是效验值函数BOOL CRegistry::VerifyValue(LPCTSTR pszValue){ ASSERT(m_hKey); LONG IReturn=RegQueryValueEx(m_hKey,pszValue,NULL, NULL,NULL,NULL);//主册表查询API; m_Info.IMessage=IReturn; m_Info.dwSize=0L; m_Info.dwType=0L; if(IReturn==ERROR_SUCCESS) return TRUE; return FALSE;}//以下函数是用来写入键BOOL CRegistry::CreateKey(HKEY hKeyRoot,LPCTSTR pszPath){ DWORD dw; //建立并打开关键字,如主册表关键字已经存在, //则打开这个这个关键字(32Windows) LONG ReturnValue=RegCreateKeyEx(hKeyRoot,pszPath,0L,NULL, REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hKey,&dw); m_Info.IMessage=ReturnValue; m_Info.dwSize=0L; m_Info.dwType=0L; if(ReturnValue==ERROR_SUCCESS) return TRUE; return FALSE;}//以下用来打开一个键BOOL CRegistry::Open(HKEY hKeyRoot,LPCTSTR pszPath){ m_sPath=pszPath; //主册表操作API //打开指定的关键字 LONG ReturnValue=RegOpenKeyEx(hKeyRoot,pszPath,0L, KEY_ALL_ACCESS,&m_hKey); m_Info.IMessage=ReturnValue; m_Info.dwType=0L; m_Info.dwSize=0L; if(ReturnValue==ERROR_SUCCESS) return TRUE; return FALSE;}//关闭主册表函数void CRegistry::Close(){ if(m_hKey) { //主册表操作API //释放指定的关键字 RegCloseKey(m_hKey); m_hKey=NULL; }}//写键值BOOL CRegistry::WriteStr(LPCTSTR pszKey,LPCTSTR pszData){ ASSERT(m_hKey); ASSERT(pszKey); ASSERT(pszData); ASSERT(AfxIsValidAddress(pszData,strlen(pszData),FALSE)); //主册表API LONG ReturnValue=RegSetValueEx(m_hKey,pszKey,0L,REG_SZ, (CONST BYTE*)pszData,strlen(pszData)+1); m_Info.IMessage=ReturnValue; m_Info.dwSize=strlen(pszData)+1; m_Info.dwType=REG_SZ; if(ReturnValue==ERROR_SUCCESS) return TRUE; return FALSE;} BOOL CRegistry::WriteDword(LPCTSTR pszKey,DWORD* lpData){ ASSERT(m_hKey); ASSERT(pszKey); LONG ReturnValue=RegSetValueEx(m_hKey,pszKey,0,REG_DWORD, (CONST BYTE*)lpData,sizeof(DWORD)); if(ReturnValue==ERROR_SUCCESS) return TRUE; return FALSE;}BOOL CRegistry::ReadStr(LPCTSTR pszKey,CString& sVal){ ASSERT(m_hKey); ASSERT(pszKey); DWORD dwType; DWORD dwSize=100; char szString[255]; LONG IReturn=RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL, &dwType,(BYTE*)szString,&dwSize); m_Info.IMessage=IReturn; m_Info.dwType=dwType; m_Info.dwSize=dwSize; if(IReturn==ERROR_SUCCESS) { sVal=szString; return TRUE; } return TRUE;}BOOL CRegistry::ReadDWord(LPCTSTR pszKey,DWORD* dValue){ ASSERT(m_hKey); ASSERT(pszKey); DWORD dwSize=(DWORD)sizeof(DWORD); LONG IReturn=RegQueryValueEx(m_hKey,pszKey,NULL,NULL, (BYTE*)dValue,&dwSize); m_Info.IMessage=IReturn; m_Info.dwSize=dwSize; if(IReturn==ERROR_SUCCESS) { return TRUE; } return FALSE;}BOOL CRegistry::DeleteValue(LPCTSTR pszValue){ ASSERT(m_hKey); LONG IReturn=RegDeleteValue(m_hKey,pszValue); m_Info.IMessage=IReturn; m_Info.dwType=0L; m_Info.dwSize=0L; if(IReturn==ERROR_SUCCESS) return TRUE; return FALSE;}BOOL CRegistry::DeleteValueKey(HKEY hKeyRoot,LPCTSTR pszPath){ ASSERT(pszPath); ASSERT(hKeyRoot); LONG IReturn=RegDeleteKey(hKeyRoot,pszPath); m_Info.IMessage=IReturn; m_Info.dwType=0L; m_Info.dwSize=0L; if(IReturn==ERROR_SUCCESS) return TRUE; return FALSE;} hKeyRoot=HKEY_LOCAL_MACHINE;pszPath="SOFTWARE\\Microsoft\\abc"; CStringArray不能用了 状态栏刷新问题! vc&&HOOK学习应用群,群号(11315992),禁止饼子村的人加入。 内存分配和释放的问题? VC初学者,望各位VC高手来指点迷经。关于类的使用(急) 问一下,在一个线程里Sleep(***)会不会影响其他线程? 关于聊天室的大负载问题 如何在程序中删除一个文档模板 请教高手,全屏抓图的问题 求有关以MFC为基础的OLE DB方式编写数据库应用程序的案例或书籍 我的2000、启动不了!!怎么回事? 请问applet是否支持jni的本地调用?(ie安全撤略放开)
#include <winreg.h>class CRegistry:public CObject
{
public:
CRegistry();
virtual ~CRegistry();
struct REGINFO
{
LONG IMessage;
DWORD dwType;
DWORD dwSize;
}m_Info;
public: HKEY GetRootKey(); //获得当前的根键的设置;
void SetRootKey(HKEY hBootHey); //用来设置当前的根键; BOOL VerifyKey(HKEY hKeyRoot,LPCTSTR pszPath);//检测键是否存在;
BOOL VerifyValue(LPCTSTR pszValue); //检测键值是否存在; BOOL CreateKey(HKEY hKeyRoot,LPCTSTR pszPath);//用来创建键值; BOOL Open(HKEY hKeyRoot,LPCTSTR pszPath); //打开注册表;
void Close(); //关闭注册表; BOOL DeleteValue(LPCTSTR pszValue); //删除键值;
BOOL DeleteValueKey(HKEY hKeyRoot,LPCTSTR pszPath);//删除键; BOOL WriteStr(LPCTSTR pszKey,LPCTSTR pszVal); //读当前值的内容;
BOOL WriteDword(LPCTSTR pszKey,DWORD* lpData); BOOL ReadStr(LPCTSTR pszKey,CString& sValue); //写当前值的内容;
BOOL ReadDWord(LPCTSTR pszKey,DWORD* dValue);
protected:
HKEY m_hKey;
CString m_sPath;
};
CRegistry::CRegistry()
{
//默认的根键为HKEY_LOCAL_MACHINE;
m_hKey=HKEY_LOCAL_MACHINE;
}CRegistry::~CRegistry()
{ //关闭注册表
Close();
}void CRegistry::SetRootKey(HKEY hBootKey)
{ //用来设置键根
m_hKey=hBootKey;
}HKEY CRegistry::GetRootKey()
{ //得到键根
return m_hKey;
}
//以下是判定所给的键是否存在
BOOL CRegistry::VerifyKey(HKEY hKeyRoot,LPCTSTR pszPath)
{
ASSERT(hKeyRoot);
ASSERT(pszPath); LONG ReturnValue=RegOpenKeyEx(hKeyRoot,pszPath,0L,
KEY_ALL_ACCESS,&m_hKey);//试图打开键
if(ReturnValue==ERROR_SUCCESS)//返回ERROR_SUCCESS表示成功
return TRUE; m_Info.IMessage=ReturnValue;
m_Info.dwSize=0L;
m_Info.dwType=0L; return FALSE;
}
//以下是效验值函数
BOOL CRegistry::VerifyValue(LPCTSTR pszValue)
{
ASSERT(m_hKey);
LONG IReturn=RegQueryValueEx(m_hKey,pszValue,NULL,
NULL,NULL,NULL);//主册表查询API;
m_Info.IMessage=IReturn;
m_Info.dwSize=0L;
m_Info.dwType=0L; if(IReturn==ERROR_SUCCESS)
return TRUE; return FALSE;
}
//以下函数是用来写入键
BOOL CRegistry::CreateKey(HKEY hKeyRoot,LPCTSTR pszPath)
{
DWORD dw;
//建立并打开关键字,如主册表关键字已经存在,
//则打开这个这个关键字(32Windows)
LONG ReturnValue=RegCreateKeyEx(hKeyRoot,pszPath,0L,NULL,
REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hKey,&dw);
m_Info.IMessage=ReturnValue;
m_Info.dwSize=0L;
m_Info.dwType=0L; if(ReturnValue==ERROR_SUCCESS)
return TRUE;
return FALSE;
}
//以下用来打开一个键
BOOL CRegistry::Open(HKEY hKeyRoot,LPCTSTR pszPath)
{
m_sPath=pszPath;
//主册表操作API
//打开指定的关键字
LONG ReturnValue=RegOpenKeyEx(hKeyRoot,pszPath,0L,
KEY_ALL_ACCESS,&m_hKey); m_Info.IMessage=ReturnValue;
m_Info.dwType=0L;
m_Info.dwSize=0L; if(ReturnValue==ERROR_SUCCESS)
return TRUE; return FALSE;
}
//关闭主册表函数
void CRegistry::Close()
{
if(m_hKey)
{ //主册表操作API
//释放指定的关键字
RegCloseKey(m_hKey);
m_hKey=NULL;
}
}
//写键值
BOOL CRegistry::WriteStr(LPCTSTR pszKey,LPCTSTR pszData)
{
ASSERT(m_hKey);
ASSERT(pszKey);
ASSERT(pszData);
ASSERT(AfxIsValidAddress(pszData,strlen(pszData),FALSE));
//主册表API
LONG ReturnValue=RegSetValueEx(m_hKey,pszKey,0L,REG_SZ,
(CONST BYTE*)pszData,strlen(pszData)+1); m_Info.IMessage=ReturnValue;
m_Info.dwSize=strlen(pszData)+1;
m_Info.dwType=REG_SZ; if(ReturnValue==ERROR_SUCCESS)
return TRUE; return FALSE;} BOOL CRegistry::WriteDword(LPCTSTR pszKey,DWORD* lpData)
{
ASSERT(m_hKey);
ASSERT(pszKey); LONG ReturnValue=RegSetValueEx(m_hKey,pszKey,0,REG_DWORD,
(CONST BYTE*)lpData,sizeof(DWORD)); if(ReturnValue==ERROR_SUCCESS)
return TRUE; return FALSE;}
BOOL CRegistry::ReadStr(LPCTSTR pszKey,CString& sVal)
{
ASSERT(m_hKey);
ASSERT(pszKey); DWORD dwType;
DWORD dwSize=100;
char szString[255]; LONG IReturn=RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,
&dwType,(BYTE*)szString,&dwSize); m_Info.IMessage=IReturn;
m_Info.dwType=dwType;
m_Info.dwSize=dwSize; if(IReturn==ERROR_SUCCESS)
{
sVal=szString;
return TRUE;
}
return TRUE;
}BOOL CRegistry::ReadDWord(LPCTSTR pszKey,DWORD* dValue)
{
ASSERT(m_hKey);
ASSERT(pszKey); DWORD dwSize=(DWORD)sizeof(DWORD); LONG IReturn=RegQueryValueEx(m_hKey,pszKey,NULL,NULL,
(BYTE*)dValue,&dwSize);
m_Info.IMessage=IReturn;
m_Info.dwSize=dwSize; if(IReturn==ERROR_SUCCESS)
{
return TRUE;
}
return FALSE;}BOOL CRegistry::DeleteValue(LPCTSTR pszValue)
{
ASSERT(m_hKey);
LONG IReturn=RegDeleteValue(m_hKey,pszValue); m_Info.IMessage=IReturn;
m_Info.dwType=0L;
m_Info.dwSize=0L;
if(IReturn==ERROR_SUCCESS)
return TRUE; return FALSE;
}BOOL CRegistry::DeleteValueKey(HKEY hKeyRoot,LPCTSTR pszPath)
{
ASSERT(pszPath);
ASSERT(hKeyRoot); LONG IReturn=RegDeleteKey(hKeyRoot,pszPath);
m_Info.IMessage=IReturn;
m_Info.dwType=0L;
m_Info.dwSize=0L; if(IReturn==ERROR_SUCCESS)
return TRUE; return FALSE;
}
pszPath="SOFTWARE\\Microsoft\\abc";