|
|
/*
* ini file/registry manipulation * */
#include "pch.hxx"
#include "strconst.h"
ASSERTDATA
//
// UINT RegGetKeyNumbers(HKEY hkRegDataBase, const TCHAR *szRegSection)
// Enumerate KEYS in szRegSection and return number of keys (subsections).
//
// Return 0, if szRegSection is not found, or doesn't have subsections
//
// Created: 14 Oct. 1994 by YSt
//
// Modified 10 Nov. 1997 by YSt
//
UINT RegGetKeyNumbers(HKEY hkRegDataBase, const TCHAR *szRegSection) { LONG lRes; HKEY hkSection; DWORD iSubKey = 0;
lRes = RegOpenKeyEx(hkRegDataBase, szRegSection, 0, KEY_READ, &hkSection);
if(lRes != ERROR_SUCCESS) // Cannot open reg database
return(0);
// Get number of subkeys
lRes = RegQueryInfoKey(hkSection, NULL, NULL, NULL, &iSubKey, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
RegCloseKey(hkSection);
if(lRes == ERROR_SUCCESS) return((UINT) iSubKey); else return(0); }
//
// BOOL RegGetKeyNameFromIndex(HKEY hkRegDataBase, const TCHAR *szRegSection, UINT Index,
// const TCHAR * szBuffer, UINT cbBuffer)
//
// Return name of key (subsection) from Index in szBuffer. cbBuffer has a size of szBuffer. You must
// first call RegGetKeyNumbers for enumerating values.
//
// Created: 14 Oct. 1994 by YSt
//
BOOL RegGetKeyNameFromIndex(HKEY hkRegDataBase, const TCHAR *szRegSection, UINT Index, TCHAR * szBuffer, DWORD *pcbBuffer) { LONG lRes; HKEY hkSection; FILETIME ft; lRes = RegOpenKeyEx(hkRegDataBase, szRegSection, 0, KEY_READ, &hkSection);
if(lRes != ERROR_SUCCESS) // Cannot open reg database
return(FALSE);
lRes = RegEnumKeyEx(hkSection, (DWORD) Index, szBuffer, pcbBuffer, NULL, NULL, NULL, &ft);
RegCloseKey(hkSection);
if(lRes != ERROR_SUCCESS) return (FALSE);
return (TRUE); }
|