数据类型

注册表的数据类型主要有以下四种:
显示类型(在编辑器中)   数据类型    说明                   
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)的更多相关文章

  1. MFC学习 文件操作注册表操作

    c读写文件 void CFileView::OnRead() { FILE *pFile = fopen("1.txt", "r"); /*char ch[10 ...

  2. delphi 注册表操作(读取、添加、删除、修改)完全手册

    DELPHI VS PASCAL(87)  32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息. 一.创建和释放TRegistry对象 1.创建TRegistry对象.为了操 ...

  3. CRegKey 注册表操作

    CRegKey 注册表操作 标签: accessnulluserpathbyteie 2011-11-03 13:55 3477人阅读 评论(0) 收藏 举报  分类: win32(7)  1.简介 ...

  4. C# 我的注册表操作类

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...

  5. Delphi的注册表操作

    转帖:Delphi的注册表操作 2009-12-21 11:12:52 分类: Delphi的注册表操作 32位Delphi程序中可利用TRegistry对象来存取注册表文件中的信息.     一.创 ...

  6. C#注册表操作类--完整优化版

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; namespace ...

  7. 《天书夜读:从汇编语言到windows内核编程》八 文件操作与注册表操作

    1)Windows运用程序的文件与注册表操作进入R0层之后,都有对应的内核函数实现.在windows内核中,无论打开的是文件.注册表或者设备,都需要使用InitializeObjectAttribut ...

  8. C#注册表操作类(完整版) 整理完整

    /// <summary> /// 注册表基项静态域 /// /// 主要包括: /// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键 /// ...

  9. QSettings配置读写-win注册表操作-ini文件读写

    版权声明:若无来源注明,Techie亮博客文章均为原创. 转载请以链接形式标明本文标题和地址: 本文标题:QSettings配置读写-win注册表操作-ini文件读写     本文地址:http:// ...

随机推荐

  1. SSH中后台传到前台一个信息集合,tr td中怎么进行排列,类似在一个div里排列书籍

    总觉得描述问题不对,这里详细说一下,就是把下面图片变成排列整齐,一行四个,多出来的两个排到下一行. 我问过群里的,给的答案都有些简介:1:后台排好了,前台循环出来: 2:前台直接循环,多出来的加< ...

  2. webpack的安装与使用

    在安装 Webpack 前,你本地环境必须已安装nodejs. 可以使用npm安装,当然由于 npm 安装速度慢,也可以使用淘宝的镜像及其命令 cnpm,安装使用介绍参照:使用淘宝 NPM 镜像. 使 ...

  3. Red Hat

    同义词 REDHAT一般指Red Hat Red Hat(红帽)公司(NYSE:RHT)是一家开源解决方案供应商,也是标准普尔500指数成员.总部位于美国北卡罗来纳州的罗利市,截止2015年3月3日, ...

  4. Xshell学习--菜鸟篇

    http://www.cnblogs.com/perseverancevictory/p/4910145.html 1)关于Xshell 网上更多的资料里提到的SSH客户端是putty,因为简单.开源 ...

  5. 邓_php面试【003】——完整版

    php面试题汇总四(基础篇附答案) 1. 什么事面向对象?主要特征是什么? 面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰.主要特征:封装.继承.多态. 2. SESSION ...

  6. 《并行程序设计导论》——Pthreads

    这部分不需要看了. 因为C++11和BOOST比这个Pthreads要好一点. 如果不考虑移植性,在Windows平台上用核心编程的东西比C++11和BOOST更好控制.

  7. 【WebApi系列】详解WebApi如何传递参数

    WebApi系列文章 [01]浅谈HTTP在WebApi开发中的运用 [02]聊聊WebApi体系结构 [03]详解WebApi参数的传递 [04]详解WebApi测试和PostMan [05]浅谈W ...

  8. 云计算之路-阿里云上:部分服务器未及时续费造成docker swarm集群故障

    非常非常抱歉,由于我们的疏忽 —— docker swarm 集群中的 2 台服务器没有及时续费,造成在夜里0点被自动关机,从而引发整个 docker swarm 集群故障,造成今天凌晨 0:30 ~ ...

  9. 爬取知名社区技术文章_article_3

    爬虫主逻辑处理,获取字段,获取主url和子url #!/usr/bin/python3 # -*- coding: utf-8 -*- import scrapy from scrapy.http i ...

  10. mydate97设置时间

    1.引入包 2.页面引入 <script type="text/javascript" src="${pageContext.request.contextPath ...