注册表操作(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(
HKEYhKey, // handle to open key
LPCTSTRlpSubKey, // subkey name
DWORDReserved, // reserved
LPTSTRlpClass, // class string
DWORD dwOptions, // special options
REGSAMsamDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, //inheritance
PHKEYphkResult, // key handle
LPDWORD lpdwDisposition //disposition value buffer
);
参数说明
- hKey: 要打开键的句柄或以下预定义句柄
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- lpSubKey: 指向一个用于定义子键路径的字符串
- Reserved,dwOptions,samDesired: 置0
- lpClass,lpSecurityAttributes: 置NULL
- phkResult: 用于接收键句柄
- lpdwDisposition: 接收的相关信息,取值如下
- REG_CREATED_NEW_KEY 创建成功
- REG_OPENED_EXISTING_KEY 键已存在
返回值:If the function succeeds, the return value is ERROR_SUCCESS.
打开键 RegOpenKeyEx
函数原型
LONG RegOpenKeyEx(
HKEYhKey, // handle to open key
LPCTSTRlpSubKey, //subkey name
DWORDulOptions, //reserved
REGSAMsamDesired, // security access mask
PHKEYphkResult //handle to open key
);
参数说明
- hKey: 要打开键的句柄或以下预定义句柄
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- lpSubKey: 指向一个用于定义子键路径的字符串
- ulOptions: 保留位,置0
- samDesired: 打开键后键的操作权限
- phResult: 接收打开的键的句柄
返回值:If the function succeeds, the return value is ERROR_SUCCESS
删除键 RegDeleteKey
函数原型
LONG RegDeleteKey(
HKEYhKey, // handle to open key
LPCTSTRlpSubKey //subkey name
);
参数说明
- hKey: 要打开键的句柄或以下预定义句柄
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- lpSubKey: 指向一个用于定义子键路径的字符串
返回值:If the function succeeds, the return value is ERROR_SUCCESS
修改/添加键值 RegSetValueEx
函数原型
LONG RegSetValueEx(
HKEYhKey, // handle to key
LPCTSTRlpValueName, // value name
DWORDReserved, //reserved
DWORDdwType, //value type
CONST BYTE*lpData, //value data
DWORD cbData // size ofvalue data
);
参数说明
- hKey: 打开键的句柄或以下预定义句柄
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- lpValueName: 键值的名称
- Reserved: 保留位,置0
- dwType: 键值的类型
- lpData: 键值
- cbData: 键值数据长度
返回值:If the function succeeds, thereturn value is ERROR_SUCCESS
删除键值 RegDeleteValue
函数原型
LONG RegDeleteValue(
HKEYhKey, // handle to key
LPCTSTRlpValueName //value name
);
参数说明
- hKey: 打开键的句柄或以下预定义句柄
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- lpValueName: 键值的名称
返回值:If the function succeeds, the return value is ERROR_SUCCESS
读取键值 RegQueryValueEx
函数原型
LONG RegQueryValueEx(
HKEYhKey, // handle to key
LPCTSTRlpValueName, //value name
LPDWORDlpReserved, //reserved
LPDWORD lpType, // type buffer
LPBYTElpData, //data buffer
LPDWORDlpcbData //size of data buffer
);
参数说明
- hKey: 打开键的句柄或以下预定义句柄
- HKEY_CLASSES_ROOT
- HKEY_CURRENT_USER
- HKEY_LOCAL_MACHINE
- HKEY_USERS
- lpValueName: 键值的名称
- Reserved: 保留位,置0
- lpType: 接收键值的类型
- lpData: 接收键值
- lpcbData: 接收键值数据长度
#include "stdafx.h"
#include <windows.h>
#include <iostream>
using namespacestd; int main()
{
HKEY hKey;
LPCTSTR lpRun =L"Software\\_MyTest";
DWORD state,dwtype,sizeBuff;
long lRet;
char reBuff[] ={}; //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,,KEY_ALL_ACCESS,&hKey);
if (ERROR_SUCCESS==lRet)
{
cout<<"打开键成功"<<endl;
}
else
cout<<"打开键失败"<<endl; LPCTSTR KeyName= L"KeyName";
char KeyValue[];
DWORD type;
DWORD len = sizeof(KeyValue);
lRet = RegQueryValueEx(hKey,KeyName,,&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 ;
}
===================================添加开机启动项============================================
bool AutoStart()
{
//程序路径
char strMyPath[MAX_PATH];
int retGMFN=GetModuleFileName(NULL,strMyPath,MAX_PATH);
if (retGMFN==)
{
return false;
} //写注册表,达到开机启动的效果
HKEY keyAutoStart;
char subKeyName[]="Software\\Microsoft\\Windows\\CurrentVersion\\Run";
LONG retROK=RegOpenKeyEx(HKEY_LOCAL_MACHINE,subKeyName,,KEY_ALL_ACCESS,&keyAutoStart);
if (retROK!=ERROR_SUCCESS)
{
int erro =GetLastError();
return false;
}
//添加启动项
char keyValueName[]="YunYaoHuLian_UpdateServer";
LONG retRSV=RegSetValueEx(keyAutoStart,keyValueName,,REG_SZ,(BYTE *)strMyPath,strlen(strMyPath));
if (retRSV!=ERROR_SUCCESS)
{
int erro =GetLastError();
return false;
} //不用就关闭
RegCloseKey(keyAutoStart); return true;
}
注册表操作(VC_Win32)的更多相关文章
- MFC学习 文件操作注册表操作
c读写文件 void CFileView::OnRead() { FILE *pFile = fopen("1.txt", "r"); /*char ch[10 ...
- delphi 注册表操作(读取、添加、删除、修改)完全手册
DELPHI VS PASCAL(87) 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操 ...
- CRegKey 注册表操作
CRegKey 注册表操作 标签: accessnulluserpathbyteie 2011-11-03 13:55 3477人阅读 评论(0) 收藏 举报 分类: win32(7) 1.简介 ...
- C# 我的注册表操作类
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...
- Delphi的注册表操作
转帖:Delphi的注册表操作 2009-12-21 11:12:52 分类: Delphi的注册表操作 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创 ...
- C#注册表操作类--完整优化版
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; namespace ...
- 《天书夜读:从汇编语言到windows内核编程》八 文件操作与注册表操作
1)Windows运用程序的文件与注册表操作进入R0层之后,都有对应的内核函数实现.在windows内核中,无论打开的是文件.注册表或者设备,都需要使用InitializeObjectAttribut ...
- C#注册表操作类(完整版) 整理完整
/// <summary> /// 注册表基项静态域 /// /// 主要包括: /// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 /// ...
- QSettings配置读写-win注册表操作-ini文件读写
版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写 本文地址:http:// ...
随机推荐
- JavaScript八张思维导图
JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...
- Java学习笔记22---内部类之成员内部类的继承问题
成员内部类可以继承其他的类,也可以被其它类继承,本文主要说明其它类继承成员内部类的问题. 本文要点如下: 1).成员内部类的子类可以是内部类,也可以不是内部类: 2).当成员内部类的子类不是内部类或子 ...
- JS和H5做一个音乐播放器,附带源码
http://mp.weixin.qq.com/s/KpXT9X46AMlUVXQvpHuXGQ 效果图: 实现的功能 1.首页 2.底部播放控件 3.播放页面 4.播放列表 5.排行榜 6.音乐搜索 ...
- RPC架构简单理解
RPC(Remote Promote Call) 一种进程间通信方式.允许像调用本地服务一样调用远程服务. RPC框架的主要目标就是让远程服务调用更简单.透明.RPC框架负责屏蔽底层的传输方式(TCP ...
- MySQL字符集设置—MySQL数据库乱码问题
MySQL(4.1以后版本) 服务器中有六个关键位置使用了字符集的概念,他们是:client .connection.database.results.server .system.MySQL有两个字 ...
- Java读写Excel之POI超入门(转)
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.Apache POI ...
- 新装Centos7.2 配置防火墙
1.安装 yum -y install firewalld2.开机启动 systemctl enable firewalld3.设置防火墙规则 systemctl restart firewalld ...
- BSA Network Shell系列-scriptutil命令
scriptutil ## 1 功能概述 scriptutil复制脚本到远程机的某个目录,然后在该目录执行脚本. 它的优点就是脚本是non-NSH的脚本.不支持NSH命令,执行起来的效果和runscr ...
- 四、Html常用标签
1,列表相关标签 <ul>:定义无序列表,只能包含<li>子元素 <ol>:定义有序列表,只能包含<li>子元素,因为这个标签是有序的,所有这个标签还有 ...
- Intel DPDK 全面解读
高性能网络技术 随着云计算产业的异军突起,网络技术的不断创新,越来越多的网络设备基础架构逐步向基于通用处理器平台的架构方向融合,从传统的物理网络到虚拟网络,从扁平化的网络结构到基于 SDN 分层的网络 ...