windows注册表的基本使用——示例
上网找好多资料发现一个问题就是太老。例如只有RegCreateKey而没有RegCreateKeyEx用法详解,自己摸索了几个小时终于基本用到的几个函数都试用了一遍。
下面代码已经通过编译测试
// test__regedit.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h" #include <windows.h>
#include <iostream> #include <vld.h> void test__create_regedit()
{
LPCTSTR lpSubKeyGOCOM = TEXT("SOFTWARE\\GoCom5.5");
HKEY hKeyGOCOM = NULL;
DWORD dwDisposition;//是否存在
if ( ERROR_SUCCESS==::RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, , NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyGOCOM, &dwDisposition) )
{
std::cout << "RegCreateKeyEx successful" << std::endl;
if (REG_CREATED_NEW_KEY==dwDisposition)
{
std::cout << "key create" << std::endl;
}
else
{
std::cout << "key open" << std::endl;
} LPCTSTR lpAutoRun = TEXT("auto_run");
LPCTSTR lpAutoRunVal = TEXT("TRUE");
if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun, , REG_SZ, (BYTE*)lpAutoRunVal, (lstrlen(lpAutoRunVal)+)*sizeof(TCHAR)) )
{
std::cout << "value successful" << std::endl;
}
else
{
std::cout << "value fail" << std::endl;
} LPCTSTR lpAutoRun2 = TEXT("auto_run2");
DWORD dw32AutoRunVal2 = ;
if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun2, , REG_DWORD, (BYTE*)&dw32AutoRunVal2, sizeof(DWORD)) )
{
std::cout << "value2 successful" << std::endl;
}
else
{
std::cout << "value2 fail" << std::endl;
} LPTSTR lpAutoRunValret = (LPTSTR)malloc(*sizeof(TCHAR));
DWORD cbAutoRunValret = *sizeof(TCHAR);
ZeroMemory(lpAutoRunValret, );
if ( ERROR_SUCCESS==::RegGetValue(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, lpAutoRun, RRF_RT_REG_SZ, NULL, lpAutoRunValret, &cbAutoRunValret) )
{
std::cout << "value get successful" << std::endl;
}
else
{
std::cout << "value get fail" << std::endl;
}
free(lpAutoRunValret); DWORD dwAutoRunValret2;
DWORD cbAutoRunValret2 = sizeof(DWORD);
if ( ERROR_SUCCESS==::RegGetValue(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, lpAutoRun2, RRF_RT_DWORD, NULL, (PVOID)&dwAutoRunValret2, &cbAutoRunValret2) )
{
std::cout << "value2 get successful" << dwAutoRunValret2 << std::endl;
}
else
{
std::cout << "value2 get fail" << std::endl;
} LPTSTR lpAutoRunValret3 = (LPTSTR)malloc(*sizeof(TCHAR));
DWORD cbAutoRunValret3 = *sizeof(TCHAR);
ZeroMemory(lpAutoRunValret, );
if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun, , RRF_RT_REG_SZ, (BYTE*)lpAutoRunValret3, cbAutoRunValret3) )
{
std::cout << "value get successful" << std::endl;
}
else
{
std::cout << "value get successful" << std::endl;
}
free(lpAutoRunValret); DWORD dwAutoRunValret4 = -;
DWORD cbAutoRunValret4 = sizeof(DWORD);
if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun, , RRF_RT_DWORD, (BYTE*)dwAutoRunValret4, cbAutoRunValret4) )
{
std::cout << "value2 get successful" << std::endl;
}
else
{
std::cout << "value2 get successful" << std::endl;
} }
else
{
std::cout << "RegCreateKeyEx fail" << std::endl;
}
if (hKeyGOCOM!=NULL)
{
::RegCloseKey(hKeyGOCOM);
}
}
void test__open_regedit()
{
LPCTSTR lpSubKeyGOCOM = TEXT("SOFTWARE\\GoCom5.5");
HKEY hKeyGOCOM = NULL;
if ( ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, , KEY_ALL_ACCESS|KEY_READ|KEY_WRITE, &hKeyGOCOM) )
{
std::cout << "RegOpenKeyEx successful" << std::endl;
}
else
{
std::cout << "RegOpenKeyEx fail" << std::endl;
}
if (hKeyGOCOM!=NULL)
{
::RegCloseKey(hKeyGOCOM);
}
} int _tmain(int argc, _TCHAR* argv[])
{
test__open_regedit();
test__create_regedit();
return ;
}
由于时间关系还有很多函数没有用到,等以后以机会在放上来吧(例如:RegQueryInfoKey等)
windows注册表的基本使用——示例的更多相关文章
- winreg操作windows注册表详解示例
#coding:utf-8 #=====================================================================#=====本程序演示了WINR ...
- 一些实用的Windows注册表
一些实用的Windows注册表 1.去掉快捷方式文件名后面自动添加的"-快捷方式" 在给某个文件创建快捷方式时(选中文件-->右键-->发送到-->桌面快捷方式) ...
- 使用Java修改Windows注册表
使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg a ...
- Java 修改Windows注册表,以实现开机自启动应用程序。
使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg a ...
- Windows注册表的基本知识及应用
转帖:Windows注册表的基本知识及应用 2009-12-23 11:30:56 分类: Windows注册表的基本知识及应用 一.注册表的重要性 在DOS年代,对计算机的内存管理及系统配置主要通 ...
- 1.3 Windows注册表
如何打开Windows注册表呢? 方法一:Win+R打开命令行,再输入regetdit,回车. 方法二:打开计算机,进入系统所在盘,进入Windows\System32文件夹,找到regedt32,双 ...
- 10#Windows注册表的那些事儿
引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...
- Windows 注册表 16进制时间转换( Convert Reg_binary Time to a Datetime )
背景: Windows注册表中,存在大量16进制的时间,以 reg_binary存储在注册表中. 例如: 0D 6C A4 4B 37 C5 CE 01 这种值日常报表中需要转换为适合人阅读的格式,实 ...
- [转帖]Windows注册表内容详解
Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...
随机推荐
- Mac下快捷键列表
主界面 command + tab 切换程序 command + ` 在程序内切换界面 command + w 关闭界面 command + q 关闭程序 command + option + esc ...
- bat坐拥大数据。数据挖掘/大数据给他们带来什么。
阿里巴巴CTO即阿里云负责人王坚博士说过一句话:云计算和大数据,你们都理解错了. 实际上,对于大数据究竟是什么业界并无共识.大数据并不是什么新鲜事物.信息革命带来的除了信息的更高效地生产.流通和消 ...
- MTK Android Driver知识大全
一.Display 1.lcm 相关概念1.1) MIPI接口:一共有三种接口:DBI(也做CPU或MCU接口).DPI(也叫RGB接口).DSI.在使用DSI接口时,目前75/77都只支持到2条da ...
- 借助bool判断使冒泡排序效率提高
排序问题是编程中最常见的问题.实际应用中,计算机有接近一半时间是在处理有关数据排列的问题,提高排序的效率有助于更快地解决问题. 先来说说平常一般的冒泡算法,使用两个循环,外循环作为整体排序,每趟循环使 ...
- fopen/fclose
在操作文件之前要用fopen打开文件,操作完毕要用fclose关闭文件; 打开文件就是在操作系统中分配一些资源用于保存该文件的状态信息,并得到该文件的标示,以后用户程序就可以这个标志对文件做各种操作了 ...
- 1 weekend110的hdfs源码跟踪之打开输入流 + hdfs源码跟踪之打开输入流总结
3种形式的元数据,fsimage是在磁盘上,meta.data是在内存上, 我们继续,前面呢,断点是打在这一行代码处, FileSystem fs = FileSystem.get(conf); we ...
- Mysql中查看表的类型InnoDB
问题描述: MySQL 数据表主要支持六种类型 ,分别是:BDB.HEAP.ISAM.MERGE.MYISAM.InnoBDB. 这六种又分为两类,一类是“事务安全型”(transaction-s ...
- linux安装apache软件的过程
参考官方安装指导:http://httpd.apache.org/docs/2.4/install.html 1.下载依赖包 apr/apr-util/pcre 2.解压依赖包 3.安装apr 进入安 ...
- 微信小程序正式发布!这是最全的上手指南
2017 年 1 月 9 日,是一个值得载入互联网史册的日子. 这一天,零点刚过,张小龙和他的团队,在夜色笼罩下,正式发布了微信小程序. 所以,从这一刻开始,只要有开发者登录小程序后台,并在「开发管理 ...
- Java整型与字符串相互转换(转)
1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([S ...