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注册表一知半解 不是很清晰 这里学习一下 ...
随机推荐
- HDOJ 1004题 Let the Balloon Rise strcmp()函数
Problem Description Contest time again! How excited it is to see balloons floating around. But to te ...
- oracle查看表锁及解锁
--kill session语句 1 alter system kill SESSION '2171,60490'; --以下几个为相关表 1 2 3 4 5 6 7 SELECT * FROM v$ ...
- SSH架构
说说项目架构整个变化过程吧 拿用户注册来举例: 数据库里面有一张User表 需要把注册信息存储到User表中 1. 最开始是两层架构 就是cliect + jsp + DB 就是在 ...
- linux下avr单片机开发:中断服务程序
不管是什么单片机程序,中断总是非常重要的一部分 ,linux 下的avr开发,主要是依靠avr-gcc,以及avr-libc,它们对中断程序的格式要求,与window下的icc-avr以及win-av ...
- C++——cout输出小数点后指定位数
转载自 http://blog.csdn.net/edricbjtu/article/details/41082597
- SpringMVC项目接入Springfox实战遇到的问题集合
为了方便的管理项目中API接口,目前总是会写好接口后,然后又要去维护一个文档,这对于开发者来说太心累了, 在网上找了好多关于API接口管理和生成文档的资料,一次偶然跟51的大神交流发现了Swagger ...
- Android开发_Android数据的四种存储方式
Android系统一共提供了四种数据存储方式.分别是:SharePreference.SQLite.Content Provider和File.由于Android系统中,数据基本都是私有的的,都是存放 ...
- hdu 4651 Partition (利用五边形定理求解切割数)
下面内容摘自维基百科: 五边形数定理[编辑] 五边形数定理是一个由欧拉发现的数学定理,描写叙述欧拉函数展开式的特性[1] [2].欧拉函数的展开式例如以下: 亦即 欧拉函数展开后,有些次方项被消去,仅 ...
- EditText操作收集
1.android EditText插入字符串到光标所在位置 EditText mTextInput=(EditText)findViewById(R.id.input);//EditText对象 i ...
- Windows 7系统下局域网文件共享设置方法
今天给家里增添了一台组装机,小试了一下win7局域网文件共享功能,很爽的说. 记录一下实现方法: 1.关闭防火墙 2.启用共享. 控制面板 – 网络和共享中心 – 更改高级共享设置,将图中的几个选项选 ...