zoukankan      html  css  js  c++  java
  • windows注册表的基本使用——示例

    上网找好多资料发现一个问题就是太老。例如只有RegCreateKey而没有RegCreateKeyEx用法详解,自己摸索了几个小时终于基本用到的几个函数都试用了一遍。

    下面代码已经通过编译测试

      1 // test__regedit.cpp : 定义控制台应用程序的入口点。
      2 //
      3 
      4 #include "stdafx.h"
      5 
      6 #include <windows.h>
      7 #include <iostream>
      8 
      9 #include <vld.h>
     10 
     11 void test__create_regedit()
     12 {
     13     LPCTSTR lpSubKeyGOCOM = TEXT("SOFTWARE\GoCom5.5");
     14     HKEY hKeyGOCOM = NULL;
     15     DWORD dwDisposition;//是否存在
     16     if ( ERROR_SUCCESS==::RegCreateKeyEx(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKeyGOCOM, &dwDisposition) )
     17     {
     18         std::cout << "RegCreateKeyEx successful" << std::endl;
     19         if (REG_CREATED_NEW_KEY==dwDisposition)
     20         {
     21             std::cout << "key create" << std::endl;
     22         }
     23         else
     24         {
     25             std::cout << "key open" << std::endl;
     26         }
     27 
     28         LPCTSTR lpAutoRun = TEXT("auto_run");
     29         LPCTSTR lpAutoRunVal = TEXT("TRUE");
     30         if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun, 0, REG_SZ, (BYTE*)lpAutoRunVal, (lstrlen(lpAutoRunVal)+1)*sizeof(TCHAR)) )
     31         {
     32             std::cout << "value successful" << std::endl;
     33         }
     34         else
     35         {
     36             std::cout << "value fail" << std::endl;
     37         }
     38 
     39         LPCTSTR lpAutoRun2 = TEXT("auto_run2");
     40         DWORD dw32AutoRunVal2 = 12;
     41         if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun2, 0, REG_DWORD, (BYTE*)&dw32AutoRunVal2, sizeof(DWORD)) )
     42         {
     43             std::cout << "value2 successful" << std::endl;
     44         }
     45         else
     46         {
     47             std::cout << "value2 fail" << std::endl;
     48         }
     49 
     50 
     51         LPTSTR lpAutoRunValret = (LPTSTR)malloc(20*sizeof(TCHAR));
     52         DWORD cbAutoRunValret = 20*sizeof(TCHAR);
     53         ZeroMemory(lpAutoRunValret, 20);
     54         if ( ERROR_SUCCESS==::RegGetValue(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, lpAutoRun, RRF_RT_REG_SZ, NULL, lpAutoRunValret, &cbAutoRunValret) )
     55         {
     56             std::cout << "value get successful" << std::endl;
     57         }
     58         else
     59         {
     60             std::cout << "value get fail" << std::endl;
     61         }
     62         free(lpAutoRunValret);
     63 
     64 
     65         DWORD dwAutoRunValret2;
     66         DWORD cbAutoRunValret2 = sizeof(DWORD);
     67         if ( ERROR_SUCCESS==::RegGetValue(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, lpAutoRun2, RRF_RT_DWORD, NULL, (PVOID)&dwAutoRunValret2, &cbAutoRunValret2) )
     68         {
     69             std::cout << "value2 get successful" << dwAutoRunValret2 << std::endl;
     70         }
     71         else
     72         {
     73             std::cout << "value2 get fail" << std::endl;
     74         }
     75 
     76 
     77         LPTSTR lpAutoRunValret3 = (LPTSTR)malloc(20*sizeof(TCHAR));
     78         DWORD cbAutoRunValret3 = 20*sizeof(TCHAR);
     79         ZeroMemory(lpAutoRunValret, 20);
     80         if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun, 0, RRF_RT_REG_SZ, (BYTE*)lpAutoRunValret3, cbAutoRunValret3) )
     81         {
     82             std::cout << "value get successful" << std::endl;
     83         }
     84         else
     85         {
     86             std::cout << "value get successful" << std::endl;
     87         }
     88         free(lpAutoRunValret);
     89 
     90 
     91         DWORD dwAutoRunValret4 = -1;
     92         DWORD cbAutoRunValret4 = sizeof(DWORD);
     93         if ( ERROR_SUCCESS==::RegSetValueEx(hKeyGOCOM, lpAutoRun, 0, RRF_RT_DWORD, (BYTE*)dwAutoRunValret4, cbAutoRunValret4) )
     94         {
     95             std::cout << "value2 get successful" << std::endl;
     96         }
     97         else
     98         {
     99             std::cout << "value2 get successful" << std::endl;
    100         }
    101 
    102     }
    103     else
    104     {
    105         std::cout << "RegCreateKeyEx fail" << std::endl;
    106     }
    107     if (hKeyGOCOM!=NULL)
    108     {
    109         ::RegCloseKey(hKeyGOCOM);
    110     }
    111 }
    112 void test__open_regedit()
    113 {
    114     LPCTSTR lpSubKeyGOCOM = TEXT("SOFTWARE\GoCom5.5");
    115     HKEY hKeyGOCOM = NULL;
    116     if ( ERROR_SUCCESS==::RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpSubKeyGOCOM, 0, KEY_ALL_ACCESS|KEY_READ|KEY_WRITE, &hKeyGOCOM) )
    117     {
    118         std::cout << "RegOpenKeyEx successful" << std::endl;
    119     }
    120     else
    121     {
    122         std::cout << "RegOpenKeyEx fail" << std::endl;
    123     }
    124     if (hKeyGOCOM!=NULL)
    125     {
    126         ::RegCloseKey(hKeyGOCOM);
    127     }
    128 }
    129 
    130 int _tmain(int argc, _TCHAR* argv[])
    131 {
    132     test__open_regedit();
    133     test__create_regedit();
    134     return 0;
    135 }

    由于时间关系还有很多函数没有用到,等以后以机会在放上来吧(例如:RegQueryInfoKey等)

  • 相关阅读:
    安装xshell6
    eclipse的安装和汉化
    collectd+infludb+grafana实现tomcat JVM监控
    百度网站统计和CNZZ网站统计对比
    shell,计算指定行的和,计算指定列的和
    我为什么要写博客
    kafka监控之topic的lag情况监控
    用rundeck启动tomcat报错
    xwiki升级8.8.4
    矩阵掩膜操作
  • 原文地址:https://www.cnblogs.com/superstargg/p/3977272.html
Copyright © 2011-2022 走看看