注册表API

1、创建键

  RegCreateKeyEx函数将创建指定的注册表项,如果这个表项已经存在,则打开该表项;

  LONG RegCreateKey(

    HKEY hKey,

    LPCTSTR lpSubKey,

    PHKEY phkResult

  );

    hKey:指向当前打开表项的句柄,或是下列预定义的保留句柄值之一:

      HKEY_CLASSES_ROOT

      HKEY_CURRENT_CONFIG

      HKEY_CURRENT_USER

      HKEY_LOCAL_MACHINE

      HKEY_USERS

      Windows NT: HKEY_PERFORMANCE_DATA

      Windows 95 and Windows 98: HKEY_DYN_DATA

    lpSubKey:指向将打开或创建的表项的名称的指针,该表项必须是由hKey参数所标识的项的子项;

    phkResult:指向一个变量的指针,用来接收打开或创建的表项的句柄;当不再需要此返回的注册表项句柄时,调用RegCloseKey函数关闭这个句柄;

2、打开键

  RegOpenKey函数将打开指定的注册表项;

  LONG RegOpenKey(

   HKEY hKey,

   LPCTSTR lpSubKey,

  PHKEY phkResult

  );

    各参数同RegCreateKey的参数相同

3、写入注册表

  在注册表中,值包含三个部分:值名称、值类型、值本身;

  RegSetValueEx函数可设置注册表项下指定值的数据和类型;

  LONG RegSetValueEx(

    HKEY hKey,

    LPCTSTR lpValueName,

    DWORD Reserved,

    DWORD dwType,

    CONST BYTE *lpData,

    DWORD cbData

  );

    hKey:同RegCreateKey的参数hKey相同;

    lpValueName:指向一个字符串的指针,该字符串包含了要设置值的值名称;如果有该名称的值不存在于指定的注册表项中,则将其加入到该表项中;如果该参数为NULL或指向空字符串,则为该表项的默认值或未命名值设置类型和数据;

    Reserved:保留参数,必须为0;

    dwType:指定将被存储的值的数据类型,包括:

      REG_BINARY  --任何形式的二进制数据

      REG_DWORD  --一个32位的数字

      REG_DWORD_LITTLE_ENDIAN  --一个“低字节在前”格式的32位数字

      REG_DWORD_BIG_ENDIAN  --一个“高字节在前”格式的32位数字

      REG_EXPAND_SZ  --一个以0结尾的字符串,该字符串包含对环境变量(”%PATH“)的未扩展引用

      REG_LINK  --一个Unicode格式的带符号链接

      REG_MULTI_SZ  --一个以0结尾的字符串数组,该数组以连接两个0为终止符

      REG_NONE  --未定义值类型

      REG_RESOURCE_LIST  --一个设备驱动器资源列表

      REG_SZ  --一个以0结尾的字符串

    lpData:指向一个缓冲区,该缓冲区包含了要为了指定值名称存储的数据;

    cbData:指定lpData参数所指向的数据的大小,单位为字节;

4、从注册表中读数据

  RegQueryValueEx函数将读取注册表项下指定值的数据和类型;

  LONG RegQueryValueEx(

    HKEY hKey,

    LPTSTR lpValueName,

    LPDWORD lpReserved,

    LPDWORD lpType,

    LPBYTE lpData,

    LPDWORD lpcbData

  );

    hKey:同RegCreateKey的参数hKey相同;

    lpValueName:指向一个以0结尾的字符串的指针,该字符串包含要查询的值的名称;如果此参数为NULL或指向一个空字符串,则函数将获得该注册表项的未命名值或默认值的类型及数据;

    lpReserved:保留参数,必须为NULL;

    lpType:指向一个变量的指针,该变量用于接收保存在指定值中的数据的类型代码,包括:

      REG_BINARY  --任何形式的二进制数据

      REG_DWORD  --一个32位的数字

      REG_DWORD_LITTLE_ENDIAN  --一个“低字节在前”格式的32位数字

      REG_DWORD_BIG_ENDIAN  --一个“高字节在前”格式的32位数字

      REG_EXPAND_SZ  --一个以0结尾的字符串,该字符串包含对环境变量(”%PATH“)的未扩展引用

      REG_LINK  --一个Unicode格式的带符号链接

      REG_MULTI_SZ  --一个以0结尾的字符串数组,该数组以连接两个0为终止符

      REG_NONE  --未定义值类型

      REG_RESOURCE_LIST  --一个设备驱动器资源列表

      REG_SZ  --一个以0结尾的字符串

    lpData:指向一个缓冲区,该缓冲区接收该值的数据;

    lpcbData:指向一个变量指针,该变量指示了参数lpData所指向的缓冲区的数据大小,单位为字节;当函数RegQueryValueEx返回时,此函数指向的变量则包含了实际复制到缓冲区的字节数;

时间: 2024-10-09 21:17:40

注册表API的相关文章

用C来注册表API编程

注册表这个东西是个很好玩的东西,但是总是在一层一层的包含关系里找到需要的项真是有点麻烦,而且有谁会记住路径呢? 反正我是不会记的,写个小程序,让路径保存进代码里面.释放自己的大脑储存容量. 个人就以打开Windows 8 的Aero效果为例演示注册表API的简单编程. 流程 首先来熟悉一下简单的流程: 简单了解后就可以开始正题. 代码 这里准备了两个函数,这两个函数的代码几乎一样,只是修改的值不一样,所以下面本人只会对一个函数进行简单概述. 参数 这个函数里包括了三个参数,三者都是个人预设的,来

Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结

Atitit.操作注册表 树形数据库 注册表的历史 java版本类库总结 1. 注册表是树形数据库 1 2. 注册表的由来 1 3. Java  操作注册表 2 3.1. 使用Preferences API (限定访问路径了) 2 3.2. 使用JNI 3 3.3. Jregistrykey 推荐 4 3.4. Jregistry 4 4. org.openqa.selenium.os.WindowsUtils 4 4.1. 以及进程管理 4 1. 注册表是树形数据库 树形数据库,但不提供类似S

什么是注册表与注册表的作用

注册表(Registry)是微软公司从Windows95系统开始(至目前最新Win2000系统依然使用的是它),引入用于代替原先Win32系统里ini文件,管理配置系统运行参数的一个全新的核心数据库.在这个数据库里整合集成了全部系统和应用程序的初始化信息:其中包含了硬件设备的说明.相互关联的应用程序与文档文件.窗口显示方式.网络连接参数.甚至有关系到计算机安全的网络共享设置 .它与老的win32系统里的ini文件相比,具有方便管理,安全性较高.适于网络操作等特点. 在形式上,注册表与INI文件有

Windows平台使用C语言在用户模式下注册表的增删改查

一.Wiodws注册表介绍 Windows操作系统提供了一个称为“注册表”的中心存储设施作为系统的配置和管理中心.应用程序和内核通过访问注册表来读写各种配置.Windows同时提供了一些API供应用程序访问注册表,这些API函数在接到注册表访问请求后会将他们转发给内核的系统服务.然后内核会做出相应的处理. Widows注册表是一个树状结构,每一个节点是一个键或值.键是一个容器,好比文件系统中的文件夹,值存储的是数据,相当于文件系统的文件,键可以包含其它的键(目录)或值(文件).注册表的根目录称为

.NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

目录 1.简介 1.1什么是应用程序配置数据? 1.2问题 1.3介绍Nini 2.入门 2.1一个简单的例子 2.2默认值 2.3设置.保存和删除键 2.4添加和删除配置 2.5键值扩展 3.高级主题 3.1合并 3.2价值别名 3.3键值清单 3.4活动 4.配置类型 4.1 Ini文件 4.2 XML文件 4.3 Windows注册表配置 4.4 .NET配置文件 4.5命令行(Argv)配置 5.有效使用Nini 5.1多个用户的处理配置 5.2在数据库中存储配置数据 5.3自动创建配置

注册表操作常用API 详解

API说明:RegCreateKey创建一个KEY,并返回相应的HKEYRegOpenKey打开注册表,得到一个HKEY,用来作为下面这些函数的第一个参数.RegOpenKeyEx同RegOpenKey类似,一般很少用,增加了一个访问控制类型参数.RegSetValue设置一个HKEY的默认值RegSetValueEx设置一个HKEY除默认值以外其它的值RegQueryValue获取一个HKEY的默认值RegQueryValueEx获取一个HKEY除默认值以外其它的值RegDeleteKey删除

【API】注册表编程基础-RegCreateKeyEx、RegSetValueEx

1.环境: 操作系统:Windows 10 x64 编译器:VS2015 2.关键函数 LONG WINAPI RegCreateKeyEx( _In_ HKEY hKey, _In_ LPCTSTR lpSubKey, _Reserved_ DWORD Reserved, _In_opt_ LPTSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurity

C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务,也可以通过远程注册表来查找服务的执行文件:那么卸载文件我们也就用SC命令了,卸载后需要检测是否卸载成功,修改显示名称和描述也用sc命令.至于停止和启动Windows服务我们可以用sc命令也可以用ServiceController的API,当停止失败的时候我们会强制杀掉远程进程,在卸载windows

读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)

很多方案是采用GetVersion.GetVersionEx这两个API来查询操作系统的版本号来判断当前的操作系统是Windows系列中的哪个,在Win10没有出现前,这种方法是行的通的,但是Win10出现后此方法对于判断Win10就不准了. 在此提供一个读取注册表的方法,已经验证过可行: [cpp] view plain copy //查看注册表获知:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentV