Windows编程(操作注册表)

Windows编程(操作注册表)注册表存储在二进制文件里面,win32API提供了大量的函数操作注册表RegCreateKey创建指定的注册表项RegCreateKeyW(_In_

大家好,又见面了,我是全栈君,祝每个程序员都可以多学几门语言。

Windows编程(操作注册表)

注册表 存储在二进制文件里面, win32 API 提供了大量的函数操作注册表

RegCreateKey 创建指定的注册表项

RegCreateKeyW(
_
In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支
_
In_opt_ LPCWSTR lpSubKey,//打开或者创建的表项的名称
_
Out_ PHKEY phkResult //用来接收创建或者打开表项句柄 regclosekey
);
RegOpenKeyW(
_In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支
_
In_opt_ LPCWSTR lpSubKey,
_Out_ PHKEY phkResult
);

HKEY_CLASSES_ROOT

HKEY_CURRENT_CONFIG

HKEY_CURRENT_USER

HKEY_LOCAL_MACHINE

HKEY_USERS

写注册表

RegSetValueW(
_In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支
_In_opt_ LPCWSTR lpSubKey, //打开或者创建的表项的名称
_In_ DWORD dwType, //指示被存储信息的类型 REG_SZ类型
_
In_reads_bytes_opt_(cbData) LPCWSTR lpData,//要存放到注册表里面的数
据
_
In_ DWORD cbData //要存放的字符串数据的大小、 长度
);


RegSetValueExW(
_
In_ HKEY hKey, //打开的当前项的句柄 实际上就是那几个分支
_In_opt_ LPCWSTR lpValueName,//指向一个字符串的指针, 包含了将要设置
值的名称
_
Reserved_ DWORD Reserved,// 保留参数 0
_In_ DWORD dwType,//REG_BINARY
_In_reads_bytes_opt_(cbData) CONST BYTE * lpData,
_
In_ DWORD cbData
);

查询注册表

RegQueryValueW(
_
In_ HKEY hKey,
_In_opt_ LPCWSTR lpSubKey,
_Out_writes_bytes_to_opt_(*lpcbData, *lpcbData) __out_data_source(REGISTRY)
LPWSTR lpData,
_Inout_opt_ PLONG lpcbData
);

该api中有三个出参。内容分别是数据、数据类型、数据

创建与写入注册表

    {
	{
		DWORD DWage = 20;
		HKEY  hKey;
		 RegCreateKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Rock\\admin", &hKey);
	
			MessageBox(NULL, L"创建注册表成功", 0);
			int ret = ::RegSetValueEx(hKey, L"age", 0, REG_DWORD, (CONST BYTE*) & DWage, 4);
			if (ret != ERROR_SUCCESS) {
				MessageBox(NULL,L"写注册表失败", 0);


			}
			MessageBox(NULL,L"写注册表成功", 0);
		
		::RegCloseKey(hKey);
	}

}


查询注册表

{
	HKEY hKey;
	DWORD dwAge;
	//创建注册表项  VS2019自带的调试器管理员权限运行  自己的生成是以用户的权限运行
	int ret = ::RegOpenKeyW(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Rock\\admin", &hKey);
	if (ret != ERROR_SUCCESS)
	{
		TRACE("##RegOpenKeyW Failed ,ErrorCode = %d,ret = %d", GetLastError(), ret);
		MessageBox(L"打开注册表失败");
		return;
	}

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

	TRACE("###dwType = %d,dwValue = %d ,dwAge = %d", dwType, dwValue, dwAge);
	::RegCloseKey(hKey);
	
}

实际上除此外还有更底层的API能操作注册表

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119853.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mongodb 导出数据_dbeaver导出查询结果

    mongodb 导出数据_dbeaver导出查询结果目录1、定义查询js(1)导出json(2)导出csv2、执行导出命令(1)json(2)csv1、定义查询js在mongo所在服务器,添加查询文件:query.js。内容如下:(1)导出jsondb.getCollection(‘集合名称’).find({查询条件},{“o_guid”:1,”ebs_name”:1,”ebs_f_name”:1})(2)导出csvdb.getCollection(‘集合名称’).find({查询条件},{“o_guid”:1,”ebs_name”

    2022年10月31日
  • 不就是Java编程嘛,来来来

    点击上方☝Java编程技术乐园,轻松关注!及时获取有趣有料的技术文章做一个积极的人编码、改bug、提升自己我有一个乐园,面向编程,春暖花开! …

    2022年2月28日
  • 2021.4.14永久激活码_通用破解码

    2021.4.14永久激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
  • 不管怎么选择,都会有遗憾「建议收藏」

    到底什么样的选择才是最好的,每一种选择都会有遗憾!最近有点想家,虽然在这个城市安了新家。那个小的城市–延安,和这个大的城市—长沙,两种感觉,不同的生活体验。现在都十一月了,要是在延安,那么现在已经是深秋,开始变得萧条,不想夏天那么生机盎然,而现在这个城市秋天和夏天在外观上看不出什么变化,只是现在的温度比夏天舒服了很多,不冷 不热。城市的车水马龙,霓虹灯,夜晚还是有很多的喧嚣,也看不到漫天的繁星。

    2022年2月26日
  • c++关机程序

    c++关机程序//system(“shutdown-s-t10”);//关机system(“cls”);//清屏Sleep()//延时等待这是一个电脑关机程序,但不要无聊尝试,可以在关机是使用HideCursor(); //隐藏光标#include#include<stdio.h>#include<windows.h>#includeintmain(){system(“shutdown-s-t60”);}…

    2022年7月22日
  • SPPnet笔记

    SPPnet笔记论文:SpatialPyramidPoolinginDeepConvolutionalNetworksforVisualRecognitionMotivationR-CNN等神经网络都要求输入图片是固定尺寸,比如R-CNN要求输入图片是224×224,这样就限制了其他长宽比和其他尺寸的输入图片。不同长宽比和不同尺寸的输入图片是有意义的,首先,图片数据都不是同一尺寸的,他们大小…

    2022年6月12日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号