上网找好多资料发现一个问题就是太老。例如只有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. 奇怪的JS正则之 /[A-z]/.test("\\"); // true

    本文是在一个国外介绍JS的网站上转载过来的,作者很逗,先是举例JS让人XX的例子,再动手实践发现JS隐藏的黑知识.为什么 /[A-z]/.test("\\"); 是 true ,你 ...

  2. Hibernate不同数据库 方言|驱动|url 配置

    Hibernate不同数据库方言|驱动|url mySql: hibernate.dialect : org.hibernate.dialect.MySQLDialect driverClassNam ...

  3. Bootstrap+MetroNic_1.5.4 Head meta

    Bootstrap+MetroNic_1.5.4 HTML <meta> 标签设定含义: <meta http-equiv="X-UA-Compatible" c ...

  4. [SAM4N学习笔记]按键程序(中断方式)

    一.准备工作:      将上一节搭建的工程复制一份,命名为"6.key interrupt".这一节主要讲如何使用SAM4N的GPIO中断功能,实现按键的中断输入. 二.程序编写 ...

  5. The File's Owner

    The File Owner is an instantiated, runtime object that owns the contents of your nib and its outlets ...

  6. kvm 对虚拟机里面插u盘

    KVM虚拟机上关于宿主机的USB设备使用问题探究 KVM usb passthrough就是将宿主机的usb接口直接给虚拟机使用,usb接口上的设备也就直接可以在虚拟机上使用: 测试通过usb pas ...

  7. UILabel字体加粗等属性和特效

    /* Accessing the Text Attributes text  property font  property textColor  property textAlignment  pr ...

  8. nginx日志格式含义

  9. javascript和php中的正则

    正则: var subStr=str.replace(reg/str,'');   不改变原来的字符串返回替换后的字符窜; 如果不用正则,只能替换第一个匹配到的; var subStr=str.mat ...

  10. WebService基于SoapHeader实现安全认证(一)

    本文转载:http://www.cnblogs.com/houleixx/archive/2009/08/22/webservice-soapheader-security.html WebServi ...