![]() |
利用vc访问ini文件和系统注册表
读取注册表中某个键值的内容首先要通过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); |
回复: 利用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键则分别对硬件配置信息和同动态注册相关的数据信息进行记录。
|
回复: 利用vc访问ini文件和系统注册表
VB程序代码:
If RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\QQ", 0, KEY_QUERY_VALUE, hKey) <> 0 Then MsgBox "未找到路径", vbExclamation, "提示" End If |
所有的时间均为北京时间。 现在的时间是 02:52 AM. |