⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 warifroot.cpp

📁 ftpserver very good sample
💻 CPP
字号:
#include "StdAfx.h"#include "WarIfRoot.h"   // class implemented#ifndef WAR_WIN32_REGISTRY_H#   include "WarWin32Registry.h"#endif#ifndef WAR_IF_SERVER_H#   include "WarIfServer.h"#endif#ifndef WAR_LOG_H#   include "WarLog.h"#endif/////////////////////////////// PUBLIC /////////////////////////////////////////============================= LIFECYCLE ====================================WarIfRoot::WarIfRoot() :mhKey(NULL){}// WarIfRootWarIfRoot::~WarIfRoot(){    if (mhKey)        ::RegCloseKey(mhKey);}// ~WarIfRoot//============================= OPERATORS ====================================//============================= OPERATIONS ===================================void WarIfRoot::Open(war_ccsysstr_t vendorName,         war_ccsysstr_t machineName)        throw(WarException){    mVendor = vendorName;    mMachine = machineName ? machineName : _T("");    if (!mMachine.empty())    {        int result = RegConnectRegistry(mMachine.c_str(),             GetHkey(), &mhKey);        if (ERROR_SUCCESS != result)        {            WarLog err_log(WARLOG_ERROR, "WarIfRoot::Open()");            WarError err(WAR_ERR_SYSTEM_ERROR, result);            err_log << "Failed to open a HKEY to the registry on \""                << mMachine                << "\". Reason: "                << err                << war_endl;            WarThrow(err, NULL);        }    }    mRegKey.SetRootKey(GetHkey());}war_if_server_ptr_t WarIfRoot::GetServer(war_ccsysstr_t svrName)         throw(WarException){    war_registrypath_t reg_path;    reg_path << "SOFTWARE"        << WAR_SYSSLASH << mVendor        << WAR_SYSSLASH << WAR_DEBUG_PREFIX _T("Servers")        << WAR_SYSSLASH << svrName;    mRegKey.Open(GetHkey(), reg_path);    if (mRegKey.GetStrValue(WAR_WINNT_REG_CLASSID, NULL)         != war_regstr_t(_T(WAR_CLSID_ROOT)))    {        WarThrow(WarError(WAR_ERR_NO_OBJECT), NULL);    }    return new WarIfServer(war_if_root_ptr_t(this));}//============================= ACCESS     ===================================//============================= INQUIRY    ===================================void WarIfRoot::EnumServers(strlist_t& serverList) const{    war_registrypath_t reg_path;    reg_path << "SOFTWARE"        << WAR_SYSSLASH << mVendor        << WAR_SYSSLASH << WAR_DEBUG_PREFIX _T("Servers");    WarWin32Registry reg_root;    reg_root.Open(WarWin32Registry::open_t(mRegKey, reg_path));    WarWin32Registry::keyname_list_t keys;    reg_root.EnumKey(keys);    for(WarWin32Registry::keyname_list_t::const_iterator P = keys.begin()        ; P != keys.end()        ; ++P)    {        WarWin32Registry reg_server;        reg_server.Open(WarWin32Registry::open_t(            reg_root.GetRef(P->c_str())));                if (reg_server.GetStrValue(WAR_WINNT_REG_CLASSID, NULL)             == war_regstr_t(_T(WAR_CLSID_ROOT)))        {            serverList.push_back(*P);        }    }}HKEY WarIfRoot::GetHkey() const{    if (mhKey)        return mhKey;    return HKEY_LOCAL_MACHINE;}/////////////////////////////// PROTECTED  ////////////////////////////////////////////////////////////////// PRIVATE    ///////////////////////////////////

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -