文档章节

注册表

一个小妞
 一个小妞
发布于 2017/01/14 17:26
字数 1390
阅读 18
收藏 0

打开注册表办法:在运行窗口输入regedit

注册表相关函数:

RegOpenKeyEx: 打开一个指定的注册表键。

RegOpenKeyEx 函数的定义形式为:

LONG RegOpenKeyEx(HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult 
) 

第一个参数:hKey:需要打开的主键的名称(HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,

HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG);

第二个参数:lpSubKey:需要打开的子键的名称: 指向一个非中断字符串包含将要打开键的名称。如果参数设置为NULL 或者指向一个空字符串,过程将打开一个新的句柄由hKey参数确定的值。这种情况下,过程不会关闭先前已经打开的句柄。

第三个参数:ulOptions:保留, 必须设为0;

第四个参数:samDesired:安全访问标记,也就是权限,(KEY_ALL_ACCESS。。。。);

第五个参数:phkResult:得到的将要打开键的句柄。

返回值: 如果函数调用成功,则返回0(ERROR_SUCCESS)。否则,返回值为文件WINERROR.h中定义的一个非零的错误代码。

具体用法如例:

CString strSubKey(_T("SYSTEM\\ControlSet001\\Control\\ComputerName\\ComputerName"));
if( ERROR_SUCCESS !=  RegOpenKeyEx(HKEY_LOCAL_MACHINE, strSubKey, 0, KEY_ALL_ACCESS, &hKey))
{
    retuen;
}

 

RegEnumKeyEx: 枚举指定项下方的子项

RegEnumKeyEx函数的定义形式为:

LONG RegQueryValueEx(HKEY hKey, DWORD dwIndex, LPTSTR lpName,LPDWORD lpcbName, LPDWORD lpReserved,LPTSTR lpClass, LPDWORD lpcbClass,PFILETIME lpftLastWriteTime);

第一个参数:hKey: 一个已打开项的句柄,或者指定一个标准项名 ;

第二个参数:dwIndex: 欲获取的子项的索引。第一个子项的索引编号为零 ;

第三个参数: lpName :用于装载指定索引处项名的一个缓冲区 ;

第四个参数: lpcbName : 指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。一旦返回,它会设为实际装载到lpName缓冲区的字符数量 ;

第五个参数: lpReserved :保留,必须设为NULL;

第六个参数: lpClass : 项使用的类名。可以为vbNullString

第七个参数: lpcbClass : 用于装载lpClass缓冲区长度的一个变量。一旦返回,它会设为实际装载到缓冲区的字符数量 ;

第八个参数: lpftLastWriteTime : 枚举子项上一次修改的时间 ;

返回值: 如果函数调用成功,则返回0(ERROR_SUCCESS) 。其他任何值都代表一个错误代码

 

SHDeleteKey: 用来删除一个注册表键,包括其下面的子键 。RegDeleteKey也可以用来删除一个键值 , 在 Win 95/98 平台下,也可用来删除整个子键和键值。但是在Windows NT/2000平台下,只能用来删除没有子键的键。

SHDeleteKey函数的定义形式为:

LONG SHDeleteKey (HKEY hKey,LPCTSTR lpSubKey);

第一个参数:hKey: 一个已打开项的句柄,或者指定一个标准项名 ;

第二个参数:lpSubKey:被删除的键值名称。它必须是hkey的一个子项,但它并不能有子项。此参数不能为空。键值的名称不区分大小写。

返回值: 如果函数调用成功,则返回0(ERROR_SUCCESS) 。其他任何值都代表一个错误代码

具体用法如例:

TCHAR szSubKey[MAX_PATH];
DWORD dwNameLen = MAX_PATH;
if (ERROR_SUCCESS == RegEnumKeyEx(hKey, 0, szSubKey, &dwNameLen, NULL, NULL, NULL, NULL))
{
    if(ERROR_SUCCESS != SHDeleteKey(HKEY_LOCAL_MACHINE,strSubKey));
   {
        AfxMessageBox(_T("删除失败!"));
        return;
   }
}

 

RegQueryValueEx:得到所打开注册表键所关联的一个给定值的类型和数据

RegQueryValueEx 函数的定义形式为:

LONG RegQueryValueEx( HKEY hKey, LPTSTR lpValueName,LPDWORD lpReserved,LPDWORD lpType, LPBYTE lpData,LPDWORD lpcbData ); 

第一个参数:hKey: 一个已打开项的句柄,或者指定一个标准项名 ;

第二个参数:lpValueName: 要查询值的名字的地址,如果是NULL或一个空字符串(""),这个函数找回这个键的未命名或默认值的类型和数据;

第三个参数: lpReserved:保留,必须设为NULL;

第四个参数:lpType:值类型缓存地址,如果不需要类型lpType参数可以为空(NULL)。可以有以下值:1.REG_BINARY二进制数据。2.REG_DWORD一个32位数字。3.REG_DWORD_LITTLE_ENDIAN一个little-endian格式的32位数字。这相当于REG_DWORD。(ittle-endian格式,是一个多字节值在内存中被从低字节到高字节存贮。如,值0x12345678被存贮为0x78 0x56 0x34 0x12)。4.REG_DWORD_BIG_ENDIAN一个big-endian格式的32位数字。(big-endian格式,一个多字节值在内存职被从高字节到低字节存贮。如,值0x12345678被存贮为(0x12 0x34 0x56 0x78)。)5.REG_EXPAND_SZ一个包含未被引用的环境变量的以空字符结束的字符串(如,"%PATH%")。ExpandEnvironmentStrings函数。6.REG_LINK一个Unicode符号连接。7.REG_MULTI_SZ一个以空字符结束的字符串数组,被两个null字符结束。8.REG_NONE未定义值类型。9.REG_RESOURCE_LIST一个设备驱动资源列表。10.REG_SZ一个以空字符结束的字符串。

第五个参数:lpData: 指定接收值数据的缓存区。如果数据是不需要的这个参数可以为空。

第六个参数:lpcbData :以字节为单位,指向lpData参数所指定地缓存区大小的变量。函数返回复制到lpData的数据大小的变量。

返回值: 如果函数调用成功,则返回0(ERROR_SUCCESS) 。其他任何值都代表一个错误代码

具体用法如例:

DWORD dwBufLen;
TCHAR bufPath[MAX_PATH] = _T("\0");
if(ERROR_SUCCESS != RegQueryValueEx(hKey, _T("InstallDir"), NULL, NULL, (LPBYTE)bufPath, &dwBufLen))
{
   return;
}

 

RegCloseKey:释放指定注册键的句柄

RegCloseKey 函数的定义形式为:

LONG RegCloseKey(HKEY hKey // 释放键的句);

参数:hKey: 想要关闭的已经打开的键。

返回值: 如果函数调用成功,则返回0(ERROR_SUCCESS) 。其他任何值都代表一个错误代码

具体用法如例:

RegCloseKey(hKey);

 

 

© 著作权归作者所有

一个小妞
粉丝 69
博文 193
码字总数 136789
作品 0
海淀
程序员
私信 提问
确定系统设置在注册表对应路径

windows系统中,注册表是个非常强大的系统编辑工具,几乎系统所有环境设置和变量都在注册表有对应的项和值。那么,对于任意一个系统设置,我们该如何知道其在注册表对应的路径和值呢? 在这里...

liuhx2
2017/02/16
0
0
wince注册表结构

与桌面Windows一样,Windows CE也使用注册表(Registry)来保存应用程序、驱动程序和用户的设定以及其他一些配置信息。Windows CE注册表也采用树形结构来管理配置信息,由于Windows CE注册表...

技术小胖子
2017/11/16
0
0
C#中如何获取注册表信息

实现方式:利用Microsoft.win32类提供的注册表类访问系统注册表获取ODBC数据服务列表。 具体实现: Microsoft.win32提供了RegistryKey类,用来访问系统的注册表。 ///定义注册表子Path stri...

晨曦之光
2012/03/09
240
0
windows的注册表是好东西吗?

这是什么的图标? 昨天不知怎么搞的突然想到注册表,看那个注册表的图标,突然发现人家是按照空间思考问题的,怪不得人家比我们高效,在人家看来那个树形的注册表是一种一层套一层,一个挨一...

花和尚鲁智深
2015/08/13
306
1
[C++]用VC++来设置获得注册表的键值(问题解决)

下面这个是基于MFC的基本对话写的。。 演示设置注册表的3中类型的值和获得注册表的3中类型的值。。 分别用RegSetValueEx()来设置,RegQueryValueEx()函数来获得。 void CUserRegDlg::OnOK()...

云栖希望。
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部