当前位置: 网学 > 编程文档 > VB > 正文

Win32 API 注册表类的编制以及使用

来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/16
下载{$ArticleTitle}原创论文样式
///////////////////////////////////////////////////
// CMyRegKey
/////////////////////////////////////////////////////////////////////////////

CMyRegKey:: CMyRegKey()
{
m_hKey = NULL;
}

CMyRegKey:: ~CMyRegKey()
{
RegClose();
}

// 定义打开注册表的函数,RegOpen 函数带有两个参数:指定要访问注册表根结点的 HKEY, 以及注

// 册表中信息的全路径。如果给入的路径不存在,则需创建一个新路径。从 RegCreateKeyEx API函数返// 回的 HKEY 作为 m_hKey 存储。

LONG CMyRegKey::RegOpen(HKEY hKeyRoot,LPCTSTR pszPath)

{

DWORD dw;
m_sPath = pszPath;

return RegCreateKeyEx(hKeyRoot,pszPath,0L,NULL,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,
&m_hKey,&dw);
}

void CMyRegKey::RegClose()
{
if(m_hKey)
{
RegCloseKey (m_hKey);
m_hKey = NULL;

}
}

LONG CMyRegKey::RegWrite(LPCTSTR pszKey,DWORD dwVal)
{

ASSERT(m_hKey);

ASSERT(pszKey);
ASSERT(pData&&dwLength>0);
ASSERT(AfxIsValidAddress(pData,dwLength,FALSE));

return RegSetValueEx(m_hKey,pszKey,0L,REG_DWORD,(CONST BYTE *)&dwVal,sizeof(DWORD));
}

LONG CMyRegKey::RegWrite(LPCTSTR pszKey,LPCTSTR pszData)
{

ASSERT(m_hKey);
ASSERT(pszKey);
ASSERT(pszData);

ASSERT(pData&&dwLength>0);
ASSERT(AfxIsValidAddress(pszData,strlen(pszData),FALSE));

return RegSetValueEx(m_hKey,pszKey,0L,REG_SZ,(CONST BYTE *)pszData,strlen (pszData)+1);

}

LONG CMyRegKey::RegWrite(LPCTSTR pszKey,const BYTE *pData,DWORD dwLength)
{

ASSERT(m_hKey);
ASSERT(pszKey);
ASSERT(AfxIsValidAddress (pData,dwLength,FALSE));

ASSERT(pData&&dwLength>0);
ASSERT(AfxIsValidAddress(pData,dwLength,FALSE));

return RegSetValueEx(m_hKey,pszKey,0L,REG_BINARY,pData,dwLength);

}
LONG CMyRegKey::RegRead (LPCTSTR pszKey,DWORD& dwVal)
{

ASSERT(m_hKey);
ASSERT(pszKey);

DWORD dwType;
DWORD dwSize = sizeof (DWORD);
DWORD dwDest;

LONG LRet = RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,&dwType,(BYTE *)
&dwDest,&dwSize);

if(LRet==ERROR_SUCCESS)
dwVal = dwDest;
return LRet;

}

LONG CMyRegKey::RegRead (LPCTSTR pszKey,CString& sVal)
{

ASSERT(m_hKey);
ASSERT(pszKey);

DWORD dwType;
DWORD dwSize = 200;
char string[200];

LONG IReturn = RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,&dwType,(BYTE *)
string,&dwSize);

if(IReturn==ERROR_SUCCESS)

sVal = string;
return IReturn;

}

LONG CMyRegKey::RegRead (LPCTSTR pszKey,BYTE * pData,DWORD& dwLen)
{

ASSERT(m_hKey);
ASSERT(pszKey);

DWORD dwType;
return RegQueryValueEx(m_hKey,(LPSTR)pszKey,NULL,&dwType,pData,&dwLen);

}

在用户需要使用时只需在你的 Project 中的 SorceFile 和 HeadFile 中分别加入 MyRegKey.cpp 以及 MyRegKey.h 程序文件。

四 . 使用外部接口示例


在VC中建立一个基于对话框(Dialog Base) 的应用程序,在对话框上放上几个Edit control 的控件,如同示例小程序 RegTech 框(见图一), 程序执行时,首先读出注册表信息分别显示在三个编辑栏中,为了演示写入操作,你可以在注册用户栏中重新输入用户名,按更改完成写入,重新运行程序,查看写入是否成功。在RegTech 框中安置了三个编辑栏,ID 为 IDC_INSTALL,IDC_USERID,IDC_VERSION,
用ClassWizard 的Member Variable 分别加上对象参数:m_Install, m_UserID 和 m_Version.
用参数来传递注册表键
  • 下一篇资讯: 用VB编写键盘拦截程序
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号