上网找好多资料发现一个问题就是太老。例如只有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注册表的基本使用——示例的更多相关文章

  1. winreg操作windows注册表详解示例

    #coding:utf-8 #=====================================================================#=====本程序演示了WINR ...

  2. 一些实用的Windows注册表

    一些实用的Windows注册表 1.去掉快捷方式文件名后面自动添加的"-快捷方式" 在给某个文件创建快捷方式时(选中文件-->右键-->发送到-->桌面快捷方式) ...

  3. 使用Java修改Windows注册表

    使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg a ...

  4. Java 修改Windows注册表,以实现开机自启动应用程序。

    使用Java修改Windows注册表,使用最基本的就是cmd命令. 事例和运行结果如下所示: package day01; import java.io.IOException; /* 1,reg a ...

  5. Windows注册表的基本知识及应用

    转帖:Windows注册表的基本知识及应用 2009-12-23 11:30:56 分类: Windows注册表的基本知识及应用  一.注册表的重要性 在DOS年代,对计算机的内存管理及系统配置主要通 ...

  6. 1.3 Windows注册表

    如何打开Windows注册表呢? 方法一:Win+R打开命令行,再输入regetdit,回车. 方法二:打开计算机,进入系统所在盘,进入Windows\System32文件夹,找到regedt32,双 ...

  7. 10#Windows注册表的那些事儿

    引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...

  8. Windows 注册表 16进制时间转换( Convert Reg_binary Time to a Datetime )

    背景: Windows注册表中,存在大量16进制的时间,以 reg_binary存储在注册表中. 例如: 0D 6C A4 4B 37 C5 CE 01 这种值日常报表中需要转换为适合人阅读的格式,实 ...

  9. [转帖]Windows注册表内容详解

    Windows注册表内容详解 来源:http://blog.sina.com.cn/s/blog_4d41e2690100q33v.html 对 windows注册表一知半解 不是很清晰 这里学习一下 ...

随机推荐

  1. java基础(十六)集合(三)

    这里有我之前上课总结的一些知识点以及代码大部分是老师讲的笔记 个人认为是非常好的,,也是比较经典的内容,真诚的希望这些对于那些想学习的人有所帮助! 由于代码是分模块的上传非常的不便.也比较多,讲的也是 ...

  2. windows ntp安装及调试

    Setting up NTP on Windows It's very helpful that Meinberg have provided an installer for the highly- ...

  3. Mysql查找如何判断字段是否包含某个字符串

    Mysql查找如何判断字段是否包含某个字符串   有这样一个需求,在Mysql数据库字符串字段(权限)中,用户有多个不同的邮箱,分别被‘,’分开,现在要取出某个邮箱的所有成员列表.   假设有个表: ...

  4. 修改Unity脚本模板的方法合计

    作为一个习惯于偷懒的程序,重复性的无聊内容是最让人无奈的事,就比如我们创建Unity脚本之后,需要手动调整生成的新脚本的格式.编码.内容:如果我们要编写的是编辑器或者服务器端脚本,需要修改的内容就会更 ...

  5. asp.net中利用session对象传递、共享数据[session用法]

    下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值: 首先定义将一个文本值或单独一个值赋予session,如下: session[“name”]=textbox1.text ...

  6. 第三篇——第二部分——第五文 配置SQL Server镜像——域环境SQL Server镜像日常维护

    本文接上面两篇搭建镜像的文章: 第三篇--第二部分--第三文 配置SQL Server镜像--域环境:http://blog.csdn.net/dba_huangzj/article/details/ ...

  7. .h头文件 .lib库文件 .dll动态库文件之间的关系

    .h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的. 附加依赖项的是.lib不是.dll,若生成了DLL,则肯定也生成 LIB文件.如果要完成源代码的编译和链接,有头文件和lib就够 ...

  8. java String的比较,BOX装箱拆箱,以及面向对象的小代码

    package cn.hncu.day2; public class StringDemo { public static void main(String[] args) { String str1 ...

  9. thinking in java 读书笔记 --- overriding private method

    一个对象可以被用作它自身的类型或者是它的基类类型.当用作它的基类类型时叫做upcasting,如下所示 BaseClass ref = new DerivedClass()  //upcasting ...

  10. OKHttp的简单使用

    一方面,最近关于OKHttp的讨论甚嚣尘上,另一方面,我最近也更新了android6.0,发现在6.0中HttpClient不能使用了,于是决定抽时间也看一下OKHttp,总结了一点东西,与大家分享. ...