Перебор разделов реестра

октября 12 2009 by admin in Администрирование

При установке или настройке ПО, названия всех необходимых разделов реестра, как правило, известны. Но иногда названия подразделов открытого раздела могут оказаться неизвестны. Для перебора подразделов служит функция RegEnumKeyEx. Ее прототип:
LONG RegEnumKeyExC HKEY hkey, DWORD dwlndex,
PTSTR pszName,
PDWORD pcbName,
PDWORD pdwReserved,
PTSTR pszClass,
PDWORD pcbClass,
PFILETIME pftLastWriteTime);
Поскольку буферы для возвращаемых названия класса и названия раздела должны предоставляться вашим кодом, передача довольно больших буферов, способных вместить данную информацию, лежит на вашей ответственности, иначе функция завершится с ошибкой. Для этого следует сначала вызвать RegQuerylnfoKey и с ее помощью определить размеры самых длинных названий подразделов и классов определенного раздела. Тем не менее, ваш код должен уметь обрабатывать и более длинные названия подразделов, так как за время, прошедшее между вызовами RegQuerylnfoKey и RegEnumKeyEx, может быть добавлен новый подраздел. RegQuerylnfoKey объявлена так:
LONG RegQueryInfoKey( HKEY hkey, PTSTR pszClass, PDWORD pcbClass, PDWORD pdwReserved, PDWORD pcSubKeys, PDWORD pcbMaxSubKeyLen, PDWORD pcbMaxClassLen, PDWORD pcValues, PDWORD pcbMaxvalueNameLen, PDWORD pcbMaxValueLen, PDWORD pcbSecurityDescriptor, PFILETIME pftLastWriteTime);