几何尺寸与公差论坛

 找回密码
 注册
查看: 3146|回复: 2

利用vc访问ini文件和系统注册表

[复制链接]
发表于 2007-3-2 11:02:00 | 显示全部楼层 |阅读模式
读取注册表中某个键值的内容首先要通过RegOpenKey()或RegOpenKeyEx()函数打开相应的键,然后再调用RegQueryValue()或RegQueryValueEx()检索指定键值的内容,操作完成后调用RegClosefKey()将打开的键关闭,结束对注册表的访问。其中RegOpenKeyEx()和RegQueryValueEx()的功能比较强大,分别是对RegOpenKey()和RegQueryValue()在功能上的扩展,其函数原型为:LONG RegOpenKeyEx(HKEY hKey, // 待打开的预定义键
 LPCTSTR lpSubKey, // 待打开的子键的地址
 DWORD ulOptions, // 保留
 REGSAM samDesired, // 安全访问掩码
 PHKEY phkResult // 打开的键的地址
);
LONG RegQueryValueEx(HKEY hKey, // 待检索的键
 LPTSTR lpValueName, // 要检索的键值名称的地址
 LPDWORD lpReserved, // 保留
 LPDWORD lpType, // 键值类型的地址
 LPBYTE lpData, // 存放检索结果的缓存的地址
 LPDWORD lpcbData // 缓存长度的地址
最后,给出了通过访问注册表键值而得到用户注册信息的简单程序示例,该示例片段展示了对系统注册表指定键的打开、检索以及关闭等基本处理过程:
// 打开键
HKEY hKEY;
LPCTSTR Rgspath = "Software\\Microsoft\\Windows NT\\CurrentVersion";
LONG ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, Rgspath, 0, KEY_READ, &hKEY);
if(ret != ERROR_SUCCESS)
{
 RegCloseKey(hKEY);
 return;
}
// 读取键值内容
DWORD dwInfoSize;
DWORD type = REG_SZ;
BYTE UserInfo[255];
ret = RegQueryValueEx(hKEY, "RegisteredOwner", NULL, &type, UserInfo, &dwInfoSize);
if(ret!=ERROR_SUCCESS)
{
 RegCloseKey(hKEY); 
 return;
}
……
// 关闭键
RegCloseKey(hKEY);
 楼主| 发表于 2007-3-2 11:03:21 | 显示全部楼层

回复: 利用vc访问ini文件和系统注册表

系统注册表是一个多层次的结构树,在树的根部共有六个预定义键:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、KEYI_USERS、HKEY_CURRENT_CONFIG和HKEY_DYN_DATA(HKEY_DYN_DATA键只对于Windows 9x而言)。在每一个预定义键下面还包含有众多的树节点,每一个节点都是注册表的关键字,均代表了一个特定的配置项目。在节点展开后又包含有子关键字,直至最后的节点。其中HKEY_CLASSES_ROOT键主要保存了文档类型和属性等信息以及同应用程序相关的分类信息等。HKEY_CURRENT_USER键主要对用户的当前系统配置进行记录。HKEY_LOCAL_MACHINE键对计算机的状态信息进行记录。KEYI_USERS键对当前系统的所有用户信息进行组织。HKEY_CURRENT_CONFIG和HKEY_DYN_DATA键则分别对硬件配置信息和同动态注册相关的数据信息进行记录。
 楼主| 发表于 2007-3-2 11:04:20 | 显示全部楼层

回复: 利用vc访问ini文件和系统注册表

VB程序代码:
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\QQ", 0, KEY_QUERY_VALUE, hKey) <> 0 Then

MsgBox "未找到路径", vbExclamation, "提示"

End If
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2024-5-22 12:47 , Processed in 0.038506 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表