C++对注册表常见操作的封装实现(四)

3、主文件(调用和测试)
view plaincopy to clipboardprint?
/********************************************************************  
*  文件名:main.cpp  
*  文件描述:主文件,对封装的注册表操作类进行测试  
*  创建人: RainLeaf, 2009年4月10日  
*  版本号:1.0  
*  修改记录:  
*********************************************************************/  
  
#include "RegOperator.h"   
#include <iostream>   
  
using namespace std;   
void RegOperatorHelp();   
  
int main( int argc, char *argv[])   
{   
  
  
    BOOL bReturn;   
  
    /* 命令行没有参数则输出帮助提示信息 */  
    if( 1 == argc )   
    {   
  
        RegOperatorHelp();   
        return 0;   
    }   
  
    for( int i = 0; i < argc; i ++)   
    {   
        assert( argv[i] );   
    }   
  
    /*============================================================  
    * 分支功能:读取键值  
    * 参  数:-read  RootKey SubKey ValueName  
    * 参数说明:命令 根键 子键 值的名字  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-read")) )   
    {   
        if( 5 == argc )   
        {   
            CRegOperator reg;   
            CString strPrint;   
            bReturn = reg.SetHKEY( argv[2] );/* 设置当前根键 */  
  
            if( FALSE == bReturn )   
            {   
                /* 根键设置失败 */  
                cout << "\nThe Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.OpenKey( argv[3] );   
            if( FALSE == bReturn )   
            {   
                cout << "Open [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.Read( argv[4], &strPrint );   
            if( FALSE == bReturn )   
            {   
                cout << "Read [" << argv[4] << "] fail!" << endl;   
                return 0;   
            }   
            /* 读取成功 */  
            cout << "The [" << argv[4] << "] value is [" << strPrint << "]" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have four param with \'-read\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:创建子键  
    * 参  数:-create  RootKey SubKey  
    * 参数说明:命令 根键 子键  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-create")) )   
    {   
        if( 4 == argc )   
        {   
            CRegOperator reg;   
  
            bReturn = reg.SetHKEY(argv[2]);   
            if( FALSE == bReturn )   
            {   
                cout << "The Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.CreateKey( argv[3] );   
            if( FALSE == bReturn )   
            {   
                cout << "Create the key [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
            cout << "Create the key [" << argv[3] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have three param with \'-create\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:创建键值  
    * 参  数:-write  RootKey SubKey ValueName Value  
    * 参数说明:命令 根键 子键 值的名字 值  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-write")) )   
    {   
        if( 6 == argc )   
        {   
            CRegOperator reg;   
            bReturn = reg.SetHKEY(argv[2]);   
  
            if( FALSE == bReturn )   
            {   
                cout << "The Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.OpenKey(argv[3]);   
            if( FALSE == bReturn )   
            {   
                cout << "Open [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.Write(argv[4], argv[5]);   
            if( FALSE == bReturn )   
            {   
                cout << "Write [" << argv[4] << "] fail!" << endl;   
                return 0;   
            }   
  
            cout << "Write [" << argv[5] << "] value into [" << argv[4] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have five param with \'-write\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:删除键值  
    * 参  数:-delval  RootKey SubKey ValueName  
    * 参数说明:命令 根键 子键 值的名字  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-delval")) )   
    {   
        if( 5 == argc )   
        {   
            CRegOperator reg;   
            bReturn = reg.SetHKEY(argv[2]);   
  
            if( FALSE == bReturn )   
            {   
                cout << "The Key [" << argv[2] << "] set fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.OpenKey(argv[3]);   
            if( FALSE == bReturn )   
            {   
                cout << "Open [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            bReturn = reg.DeleteValue( argv[4] );   
            if( FALSE == bReturn )   
            {   
                cout << "Delete the [" << argv[4] << "] fail!" << endl;   
                return 0;   
            }   
  
            cout << "Delete [" << argv[4] << "] value from [" << argv[3] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have four param with \'-delval\' option!" << endl;   
            return 0;   
        }   
    }   
  
    /*============================================================  
    * 分支功能:删除非空子键  
    * 参  数:-delkey  RootKey SubKey  
    * 参数说明:命令 根键 子键  
    * 抛出异常:操作失败,提示信息。  
    * 作  者:RainLeaf, 2009年4月10日  
    *============================================================*/  
  
    if( 0 == (strcmp(argv[1], "-delkey")) )   
    {   
        if( 4 == argc )   
        {   
            CRegOperator reg;   
  
            bReturn = reg.DeleteKey( argv[2] ,argv[3] );   
            if( FALSE == bReturn )   
            {   
                cout << "Delete the [" << argv[3] << "] fail!" << endl;   
                return 0;   
            }   
  
            cout << "Delete [" << argv[3] << "] value from [" << argv[2] << "] successfully!" << endl;   
            return 0;   
        }   
        else  
        {   
            cout << "Warning:Must have three param with \'-delkey\' option!" << endl;   
            return 0;   
        }   
    }   


本文转自jazka 51CTO博客,原文链接:http://blog.51cto.com/jazka/201906,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值