当前位置:  夜鹰网校->主册表->主册表应用->正文
☆☆ 栏目导航 ☆☆

注册表入门

注册表结构
注册表修改
注册表应用
注册表工具
注册表在线修复

VC访问注册表

http://www.yy0736.com  加入日期:2004.11.25  点击数:

[ ]

访问注册表编程的基本框架
========================
//声明 HEKY hk;
//Step 1 打开注册表的具体键RegOpenKeyEx
//Step 2 对注册表操作,RegQueryValueEx,RegSetValueEx.................
//关闭 ::RegCloseKey(hk); 前期准备
======== 声明方法: HEKY hk;
//可以换你喜欢的变量,MD说了一句废话 关于键的值的类型: 就是下面的 data_Get 的类型是 LPCTSTR 关于返回值: 例如下面的 ret0 可以通过ERROR_SUCCESS判断,大家可以看下面的示例代码 关于调用的API的参数问题:不要客气,打开MSDN,写得很清楚明白。访问注册表数据的例子
====================
//----------------------------------------------------------------
//获取WIN98版本
//---------------------------------------------------------- HKEY hk;
LPCTSTR data_Get="Software\\Microsoft\\Windows\\CurrentVersion";
//在注册表里的位置 long ret0=::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
//根 data_Get, 0,
//必须为0,保留 KEY_READ,
//安全访问屏蔽字,具体见MSDN,列出了所有的值 &hk);
//通过ERROR_SUCCESS判断打开是否成功。 if(ret0!=ERROR_SUCCESS) MessageBox("打开注册表出现错误!","错误"); LPBYTE win_version=new BYTE[80];
DWORD type=REG_SZ;
DWORD cbData=80;
long ret1=::RegQueryValueEx(hk,"VersionNumber",
//请求得到的键的名称NULL,
//保留,必须为NULL&type,
//值的类型,具体见MSDNwin_version,
//接受值的缓冲区 &cbData);
//缓冲区大小if(ret1!=ERROR_SUCCESS){ MessageBox("读取注册表键值出现错误!","错误");
} CString str_winversion=CString(win_version);
delete[] win_version;::RegCloseKey(hk);
//----------------------------------------------------------------
用API访问注册表就是一段套话,大家可以按照我的框架来写自己的访问注册表的代码。在进行VC编程的时候要有MSDN,在改写注册表的时候要先备份你的注册表。
在MFC中访问注册表
=================
MFC在类CWinApp里提供了一个成员函数SetRegistryKey(),调用它后就可以用访问.ini文件的成员函数访问注册表了。CWinApp::SetRegistryKey() 格式:void SetRegistryKey(LPCTSTR lpszRegistryKey);
lpszRegistryKey 的含义:HKEY_CURRENT_USER\SoftWare 下的子键名称。调用后下面的函数就可以访问注册表了。CWinApp::GetProfileInt(...) CWinApp::GetProfileString(...)
CWinApp::WriteProfileInt(...) CWinApp::WriteProfileString(...)例子:
//----------------------------------------------------------------
//在HKEY_CURRENT_USER\SoftWare下建立mykey主键,然后在它下面建立串
//值my_string_value 和 DWORD 键值 my_int_value
//-------------------------------------------------------- CString strKey=mykey;
CString strStringItem=my_string_value; CString strIntItem=my_int_value; CWinApp* pApp=AfxGetApp();
pApp->SetRegistryKey(strkey);
pApp->WriteProfileString(strKey,strStringItem,hello);
CString strValue;
strValue=pApp->GetProfileString(strKey,strStringItem,"默认值");
ASSERT(strValue==test);
int nValue;nValue=pApp->GetProfileInt(strKey,strIntItem,0);
ASSERT(nValue==1111);
//End That's all.----------------------------- 也是一段套话!哦k,就到这里吧,GOOD LUCKY。


作者:不详 来源:http://hfj.home.chinaren.com  

  [夜鹰论坛] [我要留言] [关闭窗口] [ ][TOP]
 

上篇:VC++:访问和修改系统注册表  下篇:用注册表“训猫”感觉不错

     
此文章最新评论(不超过十条)
■评论此文章 ( 有问题请去夜鹰论坛发帖 )
共有评论: 查看全部评论 姓名:
【 声明 】 您所发表的言论将被众多网友阅读,因此,您所发表的言论应不违反中国法律,不违背一般的道德原则,否则,您必须对您的不当言论引发的一切不良后果负责;此外,我们的管理员有权删除您发表的不当言论,谢谢合作!