zoukankan      html  css  js  c++  java
  • c++读取注册表的实例

    // 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, 0, KEY_READ, &hKEY))
        {
            DWORD dwValue;
            DWORD dwSize = sizeof(DWORD);
            DWORD dwType = REG_DWORD;
            if (::RegQueryValueEx(hKEY, _T("GridProgressColumnIndex"), 0, &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, 0, KEY_READ, &hKEY);
        cout << &hKEY << endl;//返回句柄
        cout << result<< endl;//ERROR_SUCCESS 如果返回值为0,则表示注册表打开成功
        //访问注册表,hKEY则保存此函数所打开的键的句柄
    
    
    
        if (ERROR_SUCCESS == ::RegOpenKeyEx(HKEY_LOCAL_MACHINE, data_Set, 0, KEY_READ, &hKEY)){
            char dwValue[256];
            DWORD dwSzType = REG_SZ;
            DWORD dwSize = sizeof(dwValue);
        
            if (::RegQueryValueEx(hKEY, _T("SoftwareType"), 0, &dwSzType, (LPBYTE)&dwValue, &dwSize) == ERROR_SUCCESS){
    //            AfxMessageBox(_T("错误:无法查询有关的注册表信息"));
                cout << "注册表读取成功" << endl;
                cout << "读取到的值得地址" << &dwValue << endl;
                cout << "读取到的值:";
                for (int i = 0; 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 = 6;
        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, 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_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[10];
        memset(m_name, 0, sizeof(m_name));//将数组m_name清零
        m_name[0] = 0xff;
        m_name[1] = 0xac;
        m_name[2] = 0x05;
        m_name[4] = 0x4e;
        //打开与路径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_BINARY, (unsigned char *)m_name, 5)){
    //                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, 0, 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, 0, KEY_SET_VALUE, &hKey)){
            char *szSubKey = "test111";
            int num = MultiByteToWideChar(0, 0, szSubKey, -1, NULL, 0);
            wchar_t *wide = new wchar_t[num];
            MultiByteToWideChar(0, 0, szSubKey, -1, 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 0;
    }
  • 相关阅读:
    odbc 连接字符串
    25个国外优秀电子商务网站设计案例
    用css 添加手状样式,鼠标移上去变小手,变小手
    js如何获得FCKeditor控件的值
    导致Asp.Net站点重启的10个原因
    分享45款高质量的免费(X)HTML/CSS模板
    20110627 VisualSVN安装与配置(Delphi72010/VS2010)
    iBatis把一个表的sqlmap配置的多个xml中。
    ASP.NET State Service
    存储过程分页
  • 原文地址:https://www.cnblogs.com/bksqmy/p/4599279.html
Copyright © 2011-2022 走看看