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

📄 regsettings.h

📁 ftpserver very good sample
💻 H
字号:
/******************************************************************************Module name: RegSettings.cppWritten by:  Jeffrey RichterPurpose:     CRegSettings C++ class to help with registry manipulations******************************************************************************/#pragma once/////////////////////////////////////////////////////////////////////////////class CRegSettings {public:  // Constructors/destructor   CRegSettings() : m_hkeySubkey(NULL) { };   CRegSettings(BOOL fReadOnly, HKEY hkeyRoot, LPCWSTR pszSubkey)      : m_hkeySubkey(NULL) {      OpenSubkey(fReadOnly, hkeyRoot, pszSubkey);   }   ~CRegSettings() { CloseKey(); }public:  // Opening/closing registry subkey functions   operator HKEY() const { return(m_hkeySubkey); }   LONG OpenSubkey(BOOL fReadOnly, HKEY hkeyRoot, LPCWSTR pszSubkey) {      CloseKey();      LONG lErr;      if (fReadOnly) {         lErr = ::RegOpenKeyExW(hkeyRoot, pszSubkey, 0,             KEY_QUERY_VALUE, &m_hkeySubkey);       } else {         DWORD dwDisposition;         lErr = RegCreateKeyExW(hkeyRoot, pszSubkey, 0, NULL,             REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE,             NULL, &m_hkeySubkey, &dwDisposition);      }      return(lErr);   }   void CloseKey() {      if (m_hkeySubkey != NULL) {          ::RegCloseKey(m_hkeySubkey);          m_hkeySubkey = NULL;      }   }public:  // Reading/writing registry value functions   LONG GetDWORD(LPCWSTR pszValName, PDWORD pdw) const {      DWORD cbData = sizeof(pdw);      return(GetVal(pszValName, (PBYTE) pdw, &cbData));   }   LONG SetDWORD(LPCWSTR pszValName, DWORD dw) const {      return(SetVal(pszValName, REG_DWORD, (BYTE*) &dw, sizeof(dw)));   }   LONG GetString(LPCWSTR pszValName, LPCWSTR psz, int nMaxSize) const {      DWORD cbData = nMaxSize;      return(GetVal(pszValName, (PBYTE) psz, &cbData));   }   LONG SetString(LPCWSTR pszValName, LPCWSTR psz) const {      return(SetVal(pszValName, REG_SZ, (PBYTE) psz,          sizeof(WCHAR) * (wcslen(psz) + 1)));   }      LONG GetMultiString(LPCWSTR pszValName, LPCWSTR psz, int nMaxSize) const {      return(GetString(pszValName, psz, nMaxSize));   }   LONG SetMultiString(LPCWSTR pszValName, LPCWSTR psz) const {      for (DWORD cch = 0; psz[cch] != 0; cch += 1 + wcslen(&psz[cch])) ;      return(SetVal(pszValName, REG_MULTI_SZ, (PBYTE) psz,          sizeof(WCHAR) * (cch + 1)));   }      LONG GetBinary(LPCWSTR pszValName, PBYTE pb, PDWORD pcbData) const {      return(GetVal(pszValName, pb, pcbData));   }   LONG SetBinary(LPCWSTR pszValName, CONST BYTE* pb, int nSize) const {      return(SetVal(pszValName, REG_BINARY, pb, nSize));   }   LONG GetSize(LPCWSTR pszValName, PDWORD pdw) {      return(GetVal(pszValName, NULL, pdw));   }private:   HKEY  m_hkeySubkey;private:   LONG GetVal(LPCWSTR pszValName, PBYTE pbData, PDWORD pcb) const {      return(::RegQueryValueExW(m_hkeySubkey, pszValName,          NULL, NULL, pbData, pcb));   }   LONG SetVal(LPCWSTR pszValName, DWORD dwType, CONST BYTE *pbData, DWORD cb) const {      return(::RegSetValueExW(m_hkeySubkey, pszValName,          0, dwType, pbData, cb));   }};//////////////////////////////// End of File //////////////////////////////////

⌨️ 快捷键说明

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