注册表操作(VC_Win32)
注册表操作(VC_Win32)
数据类型
注册表的数据类型主要有以下四种:
显示类型(在编辑器中) 数据类型 说明
REG_SZ 字符串 文本字符串
REG_MULTI_SZ 多字符串 含有多个文本值的字符串
REG_BINARY 二进制数 二进制值,以十六进制显示.
REG_DWORD 双字 一个32位的二进制值,显示为8位的十六进制值.
各主键的简单介绍
· HKEY_LOCAL_MACHINE 是一个显示控制系统和软件的处理键.HKLM键保存着计算机的系统信息.它包括网络和硬件上所有的软件设置.
· HKEY_CLASSES_ROOT 是系统中控制所有数据文件的项.
· HKEY_USERS 将缺省用户和目前登陆用户的信息输入到注册表编辑器
· HKEY_CURRENT_USER 包含着在HKEY_USERS安全辨别里列出的同样信息
· HKEY_CURRENT_CONFIG 包括了系统中现有的所有配置文件的细节.HKEY_CURRENT_CONFIG允许软件和设备驱动程序员很方便的更新注册表,而不涉及到多个配置文件信息. HKEY_LOCAL_MACHINE中同样的数据和任何注册表的变化都会同时的变化.
相关函数
创建键 RegCreateKeyEx(次函数主要用于生成键(目录))
函数原型
LONG RegCreateKeyEx(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // subkey name
DWORD Reserved, // reserved
LPTSTR lpClass, // class string
DWORD dwOptions, // special options
REGSAM samDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance
PHKEY phkResult, // key handle
LPDWORD lpdwDisposition // disposition value buffer
);
参数说明
· hKey: 要打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpSubKey: 指向一个用于定义子键路径的字符串
· Reserved,dwOptions,samDesired: 置0
· lpClass,lpSecurityAttributes: 置NULL
· phkResult: 用于接收键句柄
· lpdwDisposition: 接收的相关信息,取值如下
o REG_CREATED_NEW_KEY 创建成功
o REG_OPENED_EXISTING_KEY 键已存在
返回值:If the function succeeds, the return value is ERROR_SUCCESS.
打开键 RegOpenKeyEx
函数原型
LONG RegOpenKeyEx(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // subkey name
DWORD ulOptions, // reserved
REGSAM samDesired, // security access mask
PHKEY phkResult // handle to open key
);
参数说明
· hKey: 要打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpSubKey: 指向一个用于定义子键路径的字符串
· ulOptions: 保留位,置0
· samDesired: 打开键后键的操作权限
· phResult: 接收打开的键的句柄
返回值:If the function succeeds, the return value is ERROR_SUCCESS
删除键 RegDeleteKey
函数原型
LONG RegDeleteKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey // subkey name
);
参数说明
· hKey: 要打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpSubKey: 指向一个用于定义子键路径的字符串
返回值:If the function succeeds, the return value is ERROR_SUCCESS
修改/添加键值 RegSetValueEx
函数原型
LONG RegSetValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
DWORD Reserved, // reserved
DWORD dwType, // value type
CONST BYTE *lpData, // value data
DWORD cbData // size of value data
);
参数说明
· hKey: 打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpValueName: 键值的名称
· Reserved: 保留位,置0
· dwType: 键值的类型
· lpData: 键值
· cbData: 键值数据长度
返回值:If the function succeeds, the return value is ERROR_SUCCESS
删除键值 RegDeleteValue
函数原型
LONG RegDeleteValue(
HKEY hKey, // handle to key
LPCTSTR lpValueName // value name
);
参数说明
· hKey: 打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpValueName: 键值的名称
返回值:If the function succeeds, the return value is ERROR_SUCCESS
读取键值 RegQueryValueEx
函数原型
LONG RegQueryValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
LPDWORD lpReserved, // reserved
LPDWORD lpType, // type buffer
LPBYTE lpData, // data buffer
LPDWORD lpcbData // size of data buffer
);
参数说明
· hKey: 打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpValueName: 键值的名称
· Reserved: 保留位,置0
· lpType: 接收键值的类型
· lpData: 接收键值
· lpcbData: 接收键值数据长度
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
HKEY hKey;
LPCTSTR lpRun = L"Software\\_MyTest";
DWORD state,dwtype,sizeBuff;
long lRet;
char reBuff[10] = {0};
//lRet = RegCreateKeyEx(HKEY_CURRENT_USER,lpRun,0,NULL,0,0,NULL,&hKey,&state);
//if(lRet == ERROR_SUCCESS)
//{
// if(state == REG_CREATED_NEW_KEY)
// cout<<"表项创建成功"<<endl;
//
// //关闭键
// RegCloseKey(hKey);
//}
//else if (state == REG_OPENED_EXISTING_KEY)
//{
//cout<<"表项已存在"<<endl;
//}
//lRet = RegDeleteKey(HKEY_CURRENT_USER,lpRun);
//if (ERROR_SUCCESS == lRet)
//{
//cout<<"删除键成功"<<endl;
//}
//else
//cout<<"删除键失败"<<endl;
lRet = RegOpenKeyEx(HKEY_CURRENT_USER,lpRun,0,KEY_ALL_ACCESS,&hKey);
if (ERROR_SUCCESS == lRet)
{
cout<<"打开键成功"<<endl;
}
else
cout<<"打开键失败"<<endl;
LPCTSTR KeyName = L"KeyName";
char KeyValue[20];
DWORD type;
DWORD len = sizeof(KeyValue);
lRet = RegQueryValueEx(hKey,KeyName,0,&type,(BYTE*)KeyValue,&len);
if (ERROR_SUCCESS == lRet)
{
cout<<"查询键值成功------"<<KeyValue<<endl;
}
else
cout<<"查询键值失败"<<endl;
//LPCTSTR KeyName = L"KeyName";
//char KeyValue[] = "KeyValue";
//lRet = RegSetValueEx(hKey,KeyName,0,REG_SZ,(BYTE *)KeyValue,20);
//if (ERROR_SUCCESS == lRet)
//{
//cout<<"写入键值成功"<<endl;
//}
//else
//cout<<"写入键值失败"<<endl;
//LPCTSTR KeyName = L"KeyName";
//lRet = RegDeleteValue(hKey,KeyName);
//if (ERROR_SUCCESS == lRet)
//{
//cout<<"删除键值成功"<<endl;
//}
//else
//cout<<"删除键值失败"<<endl;
return 0;
}
注册表操作(VC_Win32)
数据类型
注册表的数据类型主要有以下四种:
显示类型(在编辑器中) 数据类型 说明
REG_SZ 字符串 文本字符串
REG_MULTI_SZ 多字符串 含有多个文本值的字符串
REG_BINARY 二进制数 二进制值,以十六进制显示.
REG_DWORD 双字 一个32位的二进制值,显示为8位的十六进制值.
各主键的简单介绍
· HKEY_LOCAL_MACHINE 是一个显示控制系统和软件的处理键.HKLM键保存着计算机的系统信息.它包括网络和硬件上所有的软件设置.
· HKEY_CLASSES_ROOT 是系统中控制所有数据文件的项.
· HKEY_USERS 将缺省用户和目前登陆用户的信息输入到注册表编辑器
· HKEY_CURRENT_USER 包含着在HKEY_USERS安全辨别里列出的同样信息
· HKEY_CURRENT_CONFIG 包括了系统中现有的所有配置文件的细节.HKEY_CURRENT_CONFIG允许软件和设备驱动程序员很方便的更新注册表,而不涉及到多个配置文件信息. HKEY_LOCAL_MACHINE中同样的数据和任何注册表的变化都会同时的变化.
相关函数
创建键 RegCreateKeyEx(次函数主要用于生成键(目录))
函数原型
LONG RegCreateKeyEx(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // subkey name
DWORD Reserved, // reserved
LPTSTR lpClass, // class string
DWORD dwOptions, // special options
REGSAM samDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // inheritance
PHKEY phkResult, // key handle
LPDWORD lpdwDisposition // disposition value buffer
);
参数说明
· hKey: 要打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpSubKey: 指向一个用于定义子键路径的字符串
· Reserved,dwOptions,samDesired: 置0
· lpClass,lpSecurityAttributes: 置NULL
· phkResult: 用于接收键句柄
· lpdwDisposition: 接收的相关信息,取值如下
o REG_CREATED_NEW_KEY 创建成功
o REG_OPENED_EXISTING_KEY 键已存在
返回值:If the function succeeds, the return value is ERROR_SUCCESS.
打开键 RegOpenKeyEx
函数原型
LONG RegOpenKeyEx(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // subkey name
DWORD ulOptions, // reserved
REGSAM samDesired, // security access mask
PHKEY phkResult // handle to open key
);
参数说明
· hKey: 要打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpSubKey: 指向一个用于定义子键路径的字符串
· ulOptions: 保留位,置0
· samDesired: 打开键后键的操作权限
· phResult: 接收打开的键的句柄
返回值:If the function succeeds, the return value is ERROR_SUCCESS
删除键 RegDeleteKey
函数原型
LONG RegDeleteKey(
HKEY hKey, // handle to open key
LPCTSTR lpSubKey // subkey name
);
参数说明
· hKey: 要打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpSubKey: 指向一个用于定义子键路径的字符串
返回值:If the function succeeds, the return value is ERROR_SUCCESS
修改/添加键值 RegSetValueEx
函数原型
LONG RegSetValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
DWORD Reserved, // reserved
DWORD dwType, // value type
CONST BYTE *lpData, // value data
DWORD cbData // size of value data
);
参数说明
· hKey: 打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpValueName: 键值的名称
· Reserved: 保留位,置0
· dwType: 键值的类型
· lpData: 键值
· cbData: 键值数据长度
返回值:If the function succeeds, the return value is ERROR_SUCCESS
删除键值 RegDeleteValue
函数原型
LONG RegDeleteValue(
HKEY hKey, // handle to key
LPCTSTR lpValueName // value name
);
参数说明
· hKey: 打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpValueName: 键值的名称
返回值:If the function succeeds, the return value is ERROR_SUCCESS
读取键值 RegQueryValueEx
函数原型
LONG RegQueryValueEx(
HKEY hKey, // handle to key
LPCTSTR lpValueName, // value name
LPDWORD lpReserved, // reserved
LPDWORD lpType, // type buffer
LPBYTE lpData, // data buffer
LPDWORD lpcbData // size of data buffer
);
参数说明
· hKey: 打开键的句柄或以下预定义句柄
o HKEY_CLASSES_ROOT
o HKEY_CURRENT_USER
o HKEY_LOCAL_MACHINE
o HKEY_USERS
· lpValueName: 键值的名称
· Reserved: 保留位,置0
· lpType: 接收键值的类型
· lpData: 接收键值
· lpcbData: 接收键值数据长度
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespace std;
int main()
{
HKEY hKey;
LPCTSTR lpRun = L"Software\\_MyTest";
DWORD state,dwtype,sizeBuff;
long lRet;
char reBuff[10] = {0};
//lRet = RegCreateKeyEx(HKEY_CURRENT_USER,lpRun,0,NULL,0,0,NULL,&hKey,&state);
//if(lRet == ERROR_SUCCESS)
//{
// if(state == REG_CREATED_NEW_KEY)
// cout<<"表项创建成功"<<endl;
//
// //关闭键
// RegCloseKey(hKey);
//}
//else if (state == REG_OPENED_EXISTING_KEY)
//{
//cout<<"表项已存在"<<endl;
//}
//lRet = RegDeleteKey(HKEY_CURRENT_USER,lpRun);
//if (ERROR_SUCCESS == lRet)
//{
//cout<<"删除键成功"<<endl;
//}
//else
//cout<<"删除键失败"<<endl;
lRet = RegOpenKeyEx(HKEY_CURRENT_USER,lpRun,0,KEY_ALL_ACCESS,&hKey);
if (ERROR_SUCCESS == lRet)
{
cout<<"打开键成功"<<endl;
}
else
cout<<"打开键失败"<<endl;
LPCTSTR KeyName = L"KeyName";
char KeyValue[20];
DWORD type;
DWORD len = sizeof(KeyValue);
lRet = RegQueryValueEx(hKey,KeyName,0,&type,(BYTE*)KeyValue,&len);
if (ERROR_SUCCESS == lRet)
{
cout<<"查询键值成功------"<<KeyValue<<endl;
}
else
cout<<"查询键值失败"<<endl;
//LPCTSTR KeyName = L"KeyName";
//char KeyValue[] = "KeyValue";
//lRet = RegSetValueEx(hKey,KeyName,0,REG_SZ,(BYTE *)KeyValue,20);
//if (ERROR_SUCCESS == lRet)
//{
//cout<<"写入键值成功"<<endl;
//}
//else
//cout<<"写入键值失败"<<endl;
//LPCTSTR KeyName = L"KeyName";
//lRet = RegDeleteValue(hKey,KeyName);
//if (ERROR_SUCCESS == lRet)
//{
//cout<<"删除键值成功"<<endl;
//}
//else
//cout<<"删除键值失败"<<endl;
return 0;
}
注册表操作(VC_Win32)相关推荐
- RegistryCallback routine(CmRegisterCallback 注册表操作监控介绍)
RegistryCallback routine 过滤器驱动程序的常规RegistryCallback可以监视,阻止或修改一个注册表操作. 句法 C ++ NTSTATUS CmRegisterCal ...
- Windows注册表操作基础代码
Windows注册表操作基础代码 Windows下对注册表进行操作使用的一段基础代码Reg.h: #pragma once #include<assert.h> #include< ...
- win32api window2con 模块 -系统注册表操作
#!/usr/bin/python # -*- coding: UTF-8 -*-#encoding=utf-8 #win32api #注册表操作# 注册表项 # HKEY_CLASSES_ROOT ...
- Windows核心编程_注册表操作和小练习程序关联
大家有没有见过就是当我们下载一个软件比如视频播放器 下载之后我们电脑上的视频文件图标都变成了这个视频播放器的图标,然后打开时也是默认调用此视频播放器来播放 下面就给大家介绍如何在Windows平台上实 ...
- 注册表操作C/C++(实战实现程序自启动)
C/C++ 注册表操作 注册表概述 一.注册表数据结构 二.相关函数 1.创建键 RegCreateKeyEx() 2.关闭键RegCloseKey() 3.关闭键RegOpenKeyEx() 4.修 ...
- QSettings配置读写-win注册表操作-ini文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写 本文地址:http:// ...
- NSI 脚本 -注册表操作无法正常找到的问题
今天在学习NSI脚本的时候 发现老师写的注册表操作在相应的注册表中无法找到,经过仔细的查询发现了是因为系统的问题 举个例子 WriteRegStr HKLM "Software\Micros ...
- Delphi 注册表操作
Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操作注册表,要创建一个TRegistry对象:ARe ...
- Win7系统没有注册表操作权限的解决方法
最近有部分用户反馈自己没有注册表权限,无法对注册表进行修改怎么办?其实很简单,下面小编就给大家带来Win7系统没有注册表操作权限的解决方法. 详细如下: 1.点击开始-运行-输入"gpedi ...
最新文章
- 从上往下 流式布局_教大家怎么写前端布局
- HDLBits 系列(14) Latch and Dff and Edge detect
- C# 导出word文档及批量导出word文档(2)
- access期刊可以重投几次_又被拒稿了?老司机带你一投即中
- Hybris UI的Route(路由)实现
- 电脑休眠和睡眠的区别_关机、睡眠、休眠有啥区别?微软说非特殊情况不要关机...
- kmeans算法_实战 | KMeans 聚类算法
- kendo-ui学习笔记——题记
- Java获得中文输入_使用java简单实现根据输入的汉字,得到汉字的首字母
- jquery Ajax应用
- 判断一段程序是由C 编译程序还是由C++编译程序编译的
- w10安装ubuntu_Windows10安装ubuntu18.04双系统教程
- Windows Server 2016-抢占FSMO角色
- paip.解决 数据库mysql增加列 字段很慢添加字段很慢
- 【软件测试系列十二】《压力测试报告模板》
- modelica用inertia连接FlangeWithBearing时报组件不匹配连接错误:incompatible components in connect statement
- 学堂在线数据结构上2
- 做阿里巴巴国际站比较容易踩雷的地方
- python之面向对象反射和双下方法
- 光线:提高照片的艺术感