上网找好多资料发现一个问题就是太老。例如只有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. bzoj 3626 [LNOI2014]LCA(离线处理+树链剖分,线段树)

    3626: [LNOI2014]LCA Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1272  Solved: 451[Submit][Status ...

  2. List迭代循环时出现分问题

    一个List,通过迭代之后给List中的实体重新赋值,代码如下 public List getListByPage(Page currPage) { Map recordTypeMap = BusnD ...

  3. Bzoj 3505: [Cqoi2014]数三角形 数论

    3505: [Cqoi2014]数三角形 Time Limits: 1000 ms  Memory Limits: 524288 KB  Detailed Limits   Description

  4. weblogic开发模式与生产模式介绍

    weblogic开发模式与生产模式介绍 开发模式:该模式启用自动部署 生产模式:该模式关闭自动部署 weblogic server 三种部署方法:自动部署.控制台部署.命令部署 自动部署:当其处于启用 ...

  5. Apache Commons 工具类介绍及简单使用

    转自:http://www.cnblogs.com/younggun/p/3247261.html Apache Commons包含了很多开源的工具,用于解决平时编程经常会遇到的问题,减少重复劳动.下 ...

  6. 显示、隐藏 PowerShell

    以下是一个快速实现该需求的 module.只要将以下代码复制粘贴到 Documents\WindowsPowerShell\Packages\PowerShell\PowerShell.psm1 即可 ...

  7. SVG(可扩展矢量图)系列教程

    本系列教程同步至博客www.waylau.com 从新往久排序,持续更新 SVG与JS交互实例之画板 SVG <marker>创建箭头 SVG实例之中国地图 SVG实例之电力开关 SVG ...

  8. /bin/bash^M: bad interpreter: 没有那个文件或目录--转载

    运行脚本时出现了这样一个错误,打开之后并没有找到所谓的^M,查了之后才知道原来是文件格式的问题,也就是linux和windows之间的不完全兼容...具体细节不管,如果验证: vim test.sh: ...

  9. at91sam9x5 linux 4.1.0下dts驱动编程模型

    测试环境:  CPU: AT91SAM9X35      Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实 ...

  10. SQL给字段加上统一的某个字符

    表名:News  字段名:No_id Update News set No_id='字符'+No_id