Reg注册表读写

这篇具有很好参考价值的文章主要介绍了Reg注册表读写。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Windows 95及其后继版本中,采用了一种叫做“注册表”的数据库来统一进行管理,将各种信息资源集中起来并存储各种配置信息。按照这一原则,Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表,用来管理应用程序和文件的关联、硬件设备说明、状态属性以及各种状态信息和数据等。

我们可以通过win+R,输入regedit  查看注册表编辑器。

Reg注册表读写

创建注册表 

RegCreateKeyW( )函数 

LSTATUS RegCreateKeyW(
  [in]           HKEY    hKey,
  [in, optional] LPCWSTR lpSubKey,
  [out]          PHKEY   phkResult
);
  • 参数hKey

打开的注册表句柄, 或是以下预定义键之一。

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • 参数lpSubKey

要创建表项的名称,必须是hKey参数标识的子项(子目录下)。

  • 参数phkResult

接收或打开表项的句柄 

 例如:

HKEY hKey;
RegCreateKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Xioaming\\admin", &hKey);

SOFTWATEHKEY_LOCAL_MACHINE下的子项目

Reg注册表读写 

 文章来源地址https://www.toymoban.com/news/detail-487142.html

打开注册表 

RegOpenKey( )函数

LSTATUS RegOpenKeyW(
  [in]           HKEY    hKey,
  [in, optional] LPCWSTR lpSubKey,
  [out]          PHKEY   phkResult
);
  • 参数hKey 

打开的注册表项的句柄。此句柄由RegCreateKeyExRegOpenKeyExR函数返回,也可以是以下预定义键之一:

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  • 参数lpSubKey

 要打开的注册表项的名称。此键必须是hKey参数的子项(或者说子目录下)。参数值不区分大小写。如果此参数为NULL或指向空字符串的指针,则该函数返回传入的相同句柄。

  • 参数phkResult

该变量接收打开的注册文件句柄的句柄。 

例如:

HKEY hKey;
RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Xioaming\\admin", &hKey);

SOFTWAREHKEY_LOCAL_MACHINE的子项目 

Reg注册表读写 

写注册表 

 RegSetValueEx( )函数

LSTATUS RegSetValueExW(
  [in]           HKEY       hKey,
  [in, optional] LPCWSTR    lpValueName,
                 DWORD      Reserved,
  [in]           DWORD      dwType,
  [in]           const BYTE *lpData,
  [in]           DWORD      cbData
);
  • 参数hKey

表示打开的注册表项的句柄。 或者是以下预定义键之一。

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_USERS
  •  参数lpValueName

要设置的键的名称。如果设置为NULL或空字符串 “”,则该函数将设置键为未命名值或默认值的类型和数据。

  • 参数Reserved

此参数是保留的,必须为零。

  • 参数dwTyle

表示lpData指向的数据类型。有如下的值可选

取值 含义
REG_BINARY 任何形式的二进制数据。
REG_DWORD 32 位数字。
REG_DWORD_LITTLE_ENDIAN 小端格式的 32 位数字。Windows被设计为在小端计算机体系结构上运行。因此,此值在 Windows 头文件中定义为REG_DWORD。
REG_DWORD_BIG_ENDIAN 大端格式的 32 位数字。一些 UNIX 系统支持大端架构。
REG_EXPAND_SZ 一个以 null 结尾的字符串,其中包含对环境变量的未展开引用(例如,“%PATH%”)。它将是一个 Unicode 或 ANSI 字符串,具体取决于您使用的是 Unicode 还是 ANSI 函数。若要展开环境变量引用,请使用ExpandEnvironmentString函数。
REG_LINK 一个以 null 结尾的 Unicode 字符串,其中包含通过使用 REG_OPTION_CREATE_LINK 调用RegCreateKeyEx函数创建的符号链接的目标路径。
REG_MULTI_SZ 以空字符串 (\0) 结尾的以 null 结尾的字符串序列。下面是一个示例:字符串 1\0 字符串 2\0 字符串 3\0 最后一个字符串\0\0 第一个 \0 终止第一个字符串,第二个到最后一个 \0 终止最后一个字符串最后一个 \0 终止序列。请注意,最终终止符必须计入字符串的长度。
REG_NONE 没有定义的值类型。
REG_QWORD 64 位数字。
REG_QWORD_LITTLE_ENDIAN 小端格式的 64 位数字。Windows被设计为在小端计算机体系结构上运行。因此,此值定义为 Windows 头文件中的REG_QWORD。
REG_SZ 以 null 结尾的字符串。这将是 Unicode 或 ANSI 字符串,具体取决于您使用的是 Unicode 还是 ANSI 函数。
  • 参数lpData

表示要指向存储的数据的指针,当设置为空的时候,cbData必须为'0'

  • 参数cbData

表示lpData参数指向的信息的大小(字节为单位),如果lpData存储的是字符串类型的,则cbData的值必须是包含终止符的大小。

例如:

DWORD dwAge=20;
RegSetValueEx(hKey, L"age", 0, REG_DWORD, (CONST BYTE*)&dwAge, sizeof(DWORD);

hKey是上面创建注册表返回的句柄。

读注册表 

 RegQueryValueEx( )函数

LSTATUS RegQueryValueExW(
  [in]                HKEY    hKey,
  [in, optional]      LPCWSTR lpValueName,
                      LPDWORD lpReserved,
  [out, optional]     LPDWORD lpType,
  [out, optional]     LPBYTE  lpData,
  [in, out, optional] LPDWORD lpcbData
);
  • 参数hKey

表示打开注册表的句柄,或者是以下预定义键之一

  • HKEY_CLASSES_ROOT
  • HKEY_CURRENT_CONFIG
  • HKEY_CURRENT_USER
  • HKEY_LOCAL_MACHINE
  • HKEY_PERFORMANCE_DATA
  • HKEY_PERFORMANCE_NLSTEXT
  • HKEY_PERFORMANCE_TEXT
  • HKEY_USERS
  • 参数lpValueName

表示键的名称。如果设置为NULL或空字符串 “”,则该函数将检索键为未命名值或默认值(如果有)的类型和数据。如果指定的键不在注册表,则返回 ERROR_FILE_NOT_FOUND。

  • 参数lpReserved

此参数是保留的,必须为NULL。

  • 参数lpType

指向一个变量的指针,该变量接收要读取的数据类型的代码。若不需要可设为NULL

  • 参数lpData

指向接收数据的缓冲区的指针。如果不需要数据,则可设置为NULL

  • 参数lpcbData

表示指向缓冲区大小的指针(以字节为单位),如果数据是字符串类型的,需包含终止符。

DWORD dwType;
DWORD dwAge;
DWORD dwValue;

RegQueryValueEx(hKey, L"age", 0, &dwType, (LPBYTE) & dwAge, &dwValu);

关闭注册表

 RegCloseKey( )函数

LSTATUS RegCloseKey(
  [in] HKEY hKey
);
  • 参数hKey

 要关闭的注册表句柄

  •  返回值

如果函数成功,则返回值为 ERROR_SUCCESS

如果函数失败,则返回值是在 Winerror.h 中定义的非零错误代码。

Demo

 写注册表:
下面程序中会先创建一个注册表,之后再写入内容

void CMyFileCFileView::OnWriteReg() {
	HKEY hKey;
	DWORD dwAge = 22;
	//创建注册表项
	int ret = ::RegCreateKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Xioaming\\admin", &hKey);
	if (ret != 0) {
		TRACE("#RegCreateKeyW Failed,ErrorCode = %d,ret = %d", GetLastError(), ret);
		MessageBox(L"创建注册表失败");
		return;
	}
	
	//写注册表
	ret = ::RegSetValueEx(hKey, L"age", 0, REG_DWORD, (CONST BYTE*)&dwAge, sizeof(DWORD));
	if (ret != 0) {
		TRACE("#RegSetValueEx Failed,ErrorCode = %d,ret = %d", GetLastError(), ret);
		MessageBox(L"写注册表失败");
		return;
	}
	
	//关闭注册表
	::RegCloseKey(hKey);
}

读注册表:

下面程序中会打开写入时创建的注册表,并读取写入的内容

void CMyFileCFileView::OnReadReg() {
	//RegQueryValue()	//读注册表
	HKEY hKey;
	
	//创建注册表项
	int ret = ::RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Xioaming\\admin", &hKey);
	if (ret != 0) {
		TRACE("#RegOpenKeyW Failed,ErrorCode = %d,ret = %d", GetLastError(), ret);
		MessageBox(L"打开注册表失败");
		return;
	}

	//查询注册表
	DWORD dwType;
	DWORD dwValue;
	DWORD dwAge;
	ret = ::RegQueryValueEx(hKey, L"age", 0, &dwType, (LPBYTE) & dwAge, &dwValue);
	if (ret != 0) {
		TRACE("#RegQueryValueEx Failed,ErrorCode = %d,ret = %d", GetLastError(), ret);
		MessageBox(L"读注册表失败");
		return;
	}
	TRACE("#dwType = %d,dwValue = %d,dwAge = %d", dwType, dwValue, dwAge);
	//关闭注册表
	::RegCloseKey(hKey);
}

Reg注册表读写 

 

到了这里,关于Reg注册表读写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows与网络基础:注册表基础和注册表维护与优化

    学习目标 1.理解注册表概念 2.掌握注册表维护及优化方法 注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”,也可以说是一个非常巨大的树状分层结构的数据库系统 注册表记录了用户安装在计算机上的软件和每个程序的相互关联

    2023年04月14日
    浏览(25)
  • 【Windows基础】注册表

    注册表是Windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的 核心\\\"数据库\\\" ,也可以说是一个非常巨大的 树状分层结构 的 数据库系统 注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息,它包括了计算机的硬件配置,包括自动配置的即插

    2024年02月04日
    浏览(38)
  • Windows注册表清理

    伴随着系统运行时间不断增长,我们的电脑 注册表 中累积了许多垃圾文件。这些垃圾文件都是我们平常安装与卸载程序所留下的无用注册表信息,时间一长,垃圾文件与信息越来越多,我们电脑的运行速度越来越慢。 ​ 而且部分软件由于删除方式不对,导致一些残留注册表

    2024年02月08日
    浏览(35)
  • 【Windows注册表内容详解】

    一、什么是注册表 注册表是windows操作系统、硬件设备以及客户应用程序得以正常运行和保存设置的核心“数据库”,也可以说是一个非常巨大的树状分层结构的数据库系统。 注册表记录了用户安装在计算机上的软件和每个程序的相互关联信息,它包括了计算机的硬件配置,

    2024年02月09日
    浏览(31)
  • Windows技巧之注册表

    介绍 注册表是Windows操作系统中的一个核心数据库,其中存放着各种参数,直接控制着Windows的启动、硬件驱动程序的装载以及一些Windows应用程序的运行,从而在整个系统中起着核心作用。这些作用包括了软、硬件的相关配置和状态信息,比如注册表中保存有应用程序和资源管

    2023年04月08日
    浏览(35)
  • windows注册表启动项

    实际应急响应案例时,发现很多非常规的启动项以及ARK工具未涵盖的启动项,故收集资料对注册表有关的启动项进行总结,以后处置病毒无从下手时可以考虑从启动项排查。 1.Load注册键 介绍该注册键的资料不多,实际上它也能够自动启动程序。位置: HKEY_CURRENT_USERSoftwareMi

    2024年02月05日
    浏览(37)
  • 【运维】Windows 通过注册表禁用服务

    【运维】Windows 通过注册表禁用服务 以这个服务为例子 Windows Push Notifications User Service 双击查看服务名称 WpnUserService_671f3   打开注册表 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServices{服务名称} HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesWpnUserService_671f3 选中  将右侧的 Start 改为4  十六

    2024年02月12日
    浏览(28)
  • Windows 10注册表损坏该如何修复?

    注册表是Windows系统中的一个重要的数据库,用于存储系统和应用程序的设置信息。其中包含了安装在所有版本的Microsoft Windows操作系统上的硬件和程序的选项、设置、信息和其他值。一旦损坏或丢失,就将可能影响电脑的正常运行,Windows 10注册表损坏该如何修复? 1、借助启

    2024年02月08日
    浏览(37)
  • Windows注册表脚本文件(简介、添加、修改、删除)

    我们平时大多采用Regedit注册表编辑器来实现对注册表的修改操作,但是这种手工操作费时费力,当你要对多台PC统一修改注册表时,就要怨念了。并且在某些情况下,如果注册表编辑器被禁用了,那么这种方法也会失效。于是,推荐大家使用REG文件来快速完成注册表的修改。

    2024年02月04日
    浏览(37)
  • Windows用注册表修改键盘映射(扫描码)

    使用C/C++代码方式修改可见下篇《用C/C++(Win32API)写软件修改键位》 据说Qwerty键盘是为了降低打字员打字速度,防止打字机卡机所作出的妥协。那么现在的键盘是否降低了咱敲代码的速度?试试看换成其他的键盘布局吧。 注:注册表修改映射的方法比较麻烦,但适用性还挺

    2024年02月01日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包