// CRegisterTest.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <atlbase.h>
#include <atlstr.h>
#include <Windows.h>
using namespace std; //查看HKEY_CURRENT_USER主键下Software//武汉帷幄信息技术有限公司//施工工艺决策系统//系统配置
//BCGPGanttControls//GanttChartBCGPGantt-0子键中名称为GridProgressColumnIndex的值,其类型为DWORD
void OnBnClickedQuery() //响应按钮IDC_QUERY
{
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
//打开与路径data_Set相关的hKEY
LPCTSTR data_Set = _T("/Software//武汉帷幄信息技术有限公司//施工工艺决策系统//系统配置//BCGPGanttControls//GanttChartBCGPGantt-0");
//访问注册表,hKEY则保存此函数所打开的键的句柄
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, , KEY_READ, &hKEY))
{
DWORD dwValue;
DWORD dwSize = sizeof(DWORD);
DWORD dwType = REG_DWORD;
if (::RegQueryValueEx(hKEY, _T("GridProgressColumnIndex"), , &dwType, (LPBYTE)&dwValue, &dwSize) != ERROR_SUCCESS)
{
// AfxMessageBox(_T("错误:无法查询有关的注册表信息"));
cout << "错误:无法查询有关的注册表信息"<<endl;
}
//程序结束,关闭打开的hKEY
::RegCloseKey(hKEY);
}
else{
cout << "注册表操作失败" << endl;
}
// UpdateData(false);
// TODO: 在此添加控件通知处理程序代码
}
//查看HKEY_LOCAL_MACHINE主键下SOFTWARE//Microsoft//Windows NT//CurrentVersion子键中名称为"SoftwareType的值,其类型为REG_SZ
void OnBnClickedQuery_1(){
HKEY hKEY;//定义有关的hKEY,在查询结束时要关闭
//打开与路径data_Set相关的hKEY
/*LPCTSTR data_Set = _T("SOFTWARE\\360Safe\\360krnlsvc");*/
LPCTSTR data_Set = _T("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion");
//打开一个键的函数,第三位为保留值,必须为0,&hKEY为返回值,值为打开子键的句柄
long result = ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, , KEY_READ, &hKEY);
cout << &hKEY << endl;//返回句柄
cout << result<< endl;//ERROR_SUCCESS 如果返回值为0,则表示注册表打开成功
//访问注册表,hKEY则保存此函数所打开的键的句柄 if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, , KEY_READ, &hKEY)){
char dwValue[];
DWORD dwSzType = REG_SZ;
DWORD dwSize = sizeof(dwValue); if (::RegQueryValueEx(hKEY, _T("SoftwareType"), , &dwSzType, (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS){
// AfxMessageBox(_T("错误:无法查询有关的注册表信息"));
cout << "注册表读取成功" << endl;
cout << "读取到的值得地址" << &dwValue << endl;
cout << "读取到的值:";
for (int i = ; i < sizeof(dwValue); i++){
cout << dwValue[i];
}
cout << endl;
}
else{
cout << "注册表读取失败" << endl;
cout <<"读取到的值得地址"<< &dwValue << endl;
}
//程序结束,关闭打开的hKEY
::RegCloseKey(hKEY);
}
else{
cout << "读取注册表操作失败" << endl;
}
// UpdateData(false);
// TODO: 在此添加控件通知处理程序代码
}
//在HKEY_CURRENT_USER主键下写一个Software//武汉帷幄信息技术有限公司//test111子键,设置其名称为Name,类型为DWORD,值为6
void OnBnClickedChange(){//响应按钮IDC_CHANGE{
HKEY hKey;//定义有关的hKEY,在查询结束时要关闭
HKEY hTempKey;
DWORD dwValue = ;
DWORD dwSize = sizeof(DWORD);
DWORD dwType = REG_DWORD;
//打开与路径data_Set相关的hKEY
LPCTSTR data_Set = _T("Software//武汉帷幄信息技术有限公司");
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, , KEY_SET_VALUE, &hKey)){
// 使用hKey来操作data_Set这个KEY里面的值。
if (ERROR_SUCCESS == ::RegCreateKey(hKey, _T("test111"), &hTempKey)){//背景色
if (ERROR_SUCCESS != ::RegSetValueEx(hTempKey, _T("Name"), , REG_DWORD, (CONST BYTE*)&dwValue, sizeof(DWORD))){
//AfxMessageBox(_T("错误"));
cout << "错误" << endl;
::RegCloseKey(hKey);
return;
}
}
}
else{
cout << "写注册表操作失败" << endl;
}
::RegCloseKey(hKey);
// TODO: 在此添加控件通知处理程序代码
}
//MFC中写注册表的方法
// 在HKEY_CURRENT_USER主键下写一个Software//武汉帷幄信息技术有限公司//test111子键,设置其名称为Name,类型为REG_SZ,值为China。
//void OnBnClickedChange(){
// HKEY hKey;//定义有关的hKEY,在查询结束时要关闭
// HKEY hTempKey;
// CString m_name = "China";
// LPBYTE m_name_Set = CString_To_LPBYTE(m_name);//定义x轴名称
// DWORD length = m_name.GetLength() + 1;//定义数据长度
// //打开与路径data_Set相关的hKEY
// LPCTSTR data_Set = _T("Software//武汉帷幄信息技术有限公司");
// if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, 0, KEY_SET_VALUE, &hKey)){
// // 使用hKey来操作data_Set这个KEY里面的值。
// if (ERROR_SUCCESS == ::RegCreateKey(hKey, _T("test111"), &hTempKey)) {
// if (ERROR_SUCCESS != ::RegSetValueEx(hTempKey, _T("Name"), 0, REG_SZ, m_name_Set, length)){
// cout << "错误" << endl;
// ::RegCloseKey(hKey);
// return;
// }
// }
// }else{
// cout << "操作注册表失败" << endl;
// }
// ::RegCloseKey(hKey);
//// UpdateData(false);
// // TODO: 在此添加控件通知处理程序代码
//}
//在HKEY_CURRENT_USER主键下写一个Software//武汉帷幄信息技术有限公司//test111子键,设置其名称为Name,类型为REG_ BINARY,值为ff ac 05 4e
void OnBnClickedChange_1(){
HKEY hKey;//定义有关的hKEY,在查询结束时要关闭
HKEY hTempKey;
BYTE m_name[];
memset(m_name, , sizeof(m_name));//将数组m_name清零
m_name[] = 0xff;
m_name[] = 0xac;
m_name[] = 0x05;
m_name[] = 0x4e;
//打开与路径data_Set相关的hKEY
LPCTSTR data_Set = _T("Software//武汉帷幄信息技术有限公司");
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, , KEY_SET_VALUE, &hKey)){
// 使用hKey来操作data_Set这个KEY里面的值。
if (ERROR_SUCCESS == ::RegCreateKey(hKey, _T("test111"), &hTempKey)){
if (ERROR_SUCCESS != ::RegSetValueEx(hTempKey, _T("Name"), , REG_BINARY, (unsigned char *)m_name, )){
// AfxMessageBox(_T("错误"));
cout << "错误" << endl;
::RegCloseKey(hKey);
return;
}
}
}
else{
cout << "主键写子键失败" << endl;
}
::RegCloseKey(hKey);
// UpdateData(false);
// TODO: 在此添加控件通知处理程序代码
}
//删除HKEY_CURRENT_USER//Software//武汉帷幄信息技术有限公司//test111的键值Name
void OnBnClickedDelete(){
HKEY hKey;//定义有关的hKEY,在查询结束时要关闭
//打开与路径data_Set相关的hKEY
LPCTSTR data_Set = _T("Software//武汉帷幄信息技术有限公司//test111");
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, , KEY_SET_VALUE, &hKey)){
// 使用hKey来操作data_Set这个KEY里面的值。
if (ERROR_SUCCESS != ::RegDeleteValue(hKey, _T("Name"))){
// AfxMessageBox(_T("错误"));
cout << "错误" << endl;
::RegCloseKey(hKey);
return;
}
}
else{
cout << "删除注册表失败" << endl;
}
::RegCloseKey(hKey);
// UpdateData(FALSE);
// TODO: 在此添加控件通知处理程序代码
}
void OnBnClickedDelete_1(){
HKEY hKey;//定义有关的hKEY,在查询结束时要关闭
//打开与路径data_Set相关的hKEY
LPCTSTR data_Set = _T("Software//武汉帷幄信息技术有限公司");
if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_CURRENT_USER, data_Set, , KEY_SET_VALUE, &hKey)){
char *szSubKey = "test111";
int num = MultiByteToWideChar(, , szSubKey, -, NULL, );
wchar_t *wide = new wchar_t[num];
MultiByteToWideChar(, , szSubKey, -, wide, num);
// 使用hKey来操作data_Set这个KEY里面的值。
if (ERROR_SUCCESS != ::RegDeleteKey(hKey, wide)){
// AfxMessageBox(_T("错误"));
cout << "错误" << endl;
::RegCloseKey(hKey);
return;
}
}
else{
cout << "删除注册表失败" << endl;
}
::RegCloseKey(hKey);
// UpdateData(FALSE);
// TODO: 在此添加控件通知处理程序代码
} int _tmain(int argc, _TCHAR* argv[])
{
OnBnClickedQuery_1();
cout << "hello" << endl;
system("pause");
return ;
}

c++读取注册表的实例的更多相关文章

  1. inno setup读取注册表遇到的一个坑

    一.背景 目前,公司针对PR开发的一个插件需要发布到64位系统上.该插件包括一个prm格式的文件和若干个DLL文件.其中,prm文件需要复制到PR公共插件目录下,DLL需要复制到Windows系统目录 ...

  2. WinCE下读取注册表获得SD路径

    WinCE下读取注册表获得SD路径 [要点]WinCE注册表中[HKEY_LOCAL_MACHINE\System\StorageManager\Profiles\SDMemory\] 下键Folde ...

  3. C#读取注册表信息

    注册表是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动.硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等.这就意味着,如果注册表 ...

  4. C++ 64位操作系统调用 RegOpenKey() 读取注册表,返回 2, ERROR_FILE_NOT_FOUND

    环境:64位操作系统, VS2017 首先在命令行执行 REG ADD HKLM\Software\seastarsun /v serial /t REG_SZ /d 58ae4cb077a4e1 在 ...

  5. C#读取注册表中二进制类型的值(REG_BINARY)

    如需要读取注册表中某个键的值, 例如读取DriverDesc对应的值,一般情况下为String类型,读取代码如下: RegistryKey driverKey = Registry.LocalMach ...

  6. 用javascript技术读取注册表中软件安装位置并启动本地软件

    1.首先读取注册表中本地软件安装的位置,如果未安装则无就跳转到下载页面. 2.启动软件,关闭页面. 3.如报错提示. <SCRIPT language=javascript>  <! ...

  7. Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法

    原文:Advanced Installer读取注册表时将Program Files读取为Program Files (x86)的解决办法 今天同事在做安装包的时候,有一个读取注册表路径的需求,需要根据 ...

  8. 读取注册表获取Windows系统XP/7/8/10类型(使用wcscmp比较wchar[]内容)

    很多方案是采用GetVersion.GetVersionEx这两个API来查询操作系统的版本号来判断当前的操作系统是Windows系列中的哪个,在Win10没有出现前,这种方法是行的通的,但是Win1 ...

  9. Java Windows下读取注册表的工具类

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ...

随机推荐

  1. Vue学习心得----新手如何学习Vue(转载)

    ps:本文并非原著,转载自:https://www.cnblogs.com/buzhiqianduan/p/7620102.html,请悉知 前言 使用vue框架有一段时间了,这里总结一下心得,主要为 ...

  2. 关于XShell&XFtp

    今天在开发的时候要打包一个东东到测试服务器去,突然发现xftp用不了,然后各种下载破解.绿色版 结果都是一堆广告,原来这个xshell支持民用版,无需破解就能下载使用,这里小小的记录下 一.  前言 ...

  3. 第二次写linux驱动总结

    第一次写驱动是在去年,2019年十月份左右.当时是看着韦老师的视频一步步完成的.其中经历了很多error.搭建环境花费了很多精力.时间来到了2020年2月19日星期三,韦老师新视频出来了,我跟着再来了 ...

  4. acm数论之旅--中国剩余定理

    ACM数论之旅9---中国剩余定理(CRT)(壮哉我大中华╰(*°▽°*)╯)   中国剩余定理,又名孙子定理o(*≧▽≦)ツ 能求解什么问题呢? 问题: 一堆物品 3个3个分剩2个 5个5个分剩3个 ...

  5. Spring Boot 框架 - 快速创建Spring Boot应用

    使用Spring的项目创建向导创建一个Spring Boot项目 创建完成目录 目录文件说明: 主启动程序已生成 resources文件夹中目录结构 static:保存所有的静态资源,例如js,css ...

  6. stopWatch 用法

    package com.example.stopwatch; import org.springframework.util.StopWatch; public class TestStopWatch ...

  7. ECMAScript 6.0

    ES6怎么来的 ECMAScript 和 JavaScript ECMA 是标准,JS 是实现 ECMAScript 简称 ECMA 或 ES 历史版本 1996, ES1.0 Netscape 将 ...

  8. python中文本的读写操作

    文本的操作 函数的排序操作: def func(i): return i[2] list=[('曹操',101,'c'),('吕布',100,'d'),('刘备',200,'l'),('大乔',50, ...

  9. SDNU_ACM_ICPC_2020_Winter_Practice_2nd

    A - [The__Flash]的矩阵 给你一个m×n的整数矩阵,在上面找一个x×y的子矩阵,使子矩阵中所有元素的和最大. Input输入数据的第一行为一个正整数T,表示有T组测试数据.每一组测试数据 ...

  10. centos610无桌面安装tomcat8

    1.下载安装包 wget https://www-us.apache.org/dist/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz ...