Недокументированные и малоизвестные возможности Windows XP
Шрифт:
'параметры. В нашем случае назовем эту переменную Names
' – Переменная, в которую будет помещаться идентификатор типа параметра.
'В нашем случае назовем ее Types.
obj.EnumValues RootKey, Path, Names, Types
'Проверяем, существуют ли в указанной ветви реестра параметры. Во-первых,
'проверяется равенство нулю переменной Names, содержащей названия
'параметров.
А во-вторых, проверяем на равенство нулю переменную Types.
'Переменные нужно проверять именно на равенство нулю, так как ноль
'возвращается методом EnumValues в случае ошибки.
if not IsNull(Names) and not IsNull(Types) Then
'Выполняем цикл, количество итераций которого указывается границами
'переменной types (количеством элементов в переменной types, так как это
'массив). Иными словами, выполняем цикл столько раз, сколько переменных было
'найдено в указанной ветви реестра.
for i = lbound(types) to ubound(types)
'При этом мы будем выполнять запись в текстовый файл в зависимости
'от типа переменной, указанного в переменной types. Для этого будем
'использовать выражение select case из-за особенности метода EnumValues.
'Особенностью этого метода является способ указания типа найденной
'переменной. Для этого используется массив types (в нашем случае),
'в который помещаются идентификаторы типа переменной, определенные
'в файле Winreg.h. Возможны следующие идентификаторы:
'1 – определяет переменную строкового типа;
'2 – определяет переменную расширенного строкового типа;
'3 – определяет переменную REG_BINARY-типа;
'4 – определяетпеременную REG_DWORD-типа;
'7 – определяет переменную REG_MULTI_SZ-типа.
select case types(i)
'Проверяем тип параметра и в зависимости от этого типа используем
'разные методы для получения значения параметра. Все методы для
'получения значений параметров реестра также описаны в классе
'StdRegProv. Мы используем следующие методы.
'GetStringValue – получение значения строкового типа.
'GetExpandedStringValue – получение значения расширенного строкового типа.
'GetBinaryValue – получение значения параметра REG_BINARY-типа.
'GetDWordValue –
получение значения параметра REG_DWORD-типа.
'GetMultiStringValue – получение значения параметра REG_MULTI_SZ-типа.
'Все эти методы используют для своей работы следующие переменные:
'идентификатор корневого раздела ветви реестра, остальной путь к ветви
'реестра, имя параметра (в нашем случае элемент массива names), а также
'название переменной, в которую будет считываться значение данного
'параметра.
case 1
obj.GetStringValue RootKey, path, names(i), value
'После считывания значения параметра проверяем, не произошла ли ошибка
'при считывании (как обычно, значение нуль в переменной). Если ошибки нет,
'то записываем параметр и его значение в текстовый файл. Аналогично
'выполняется работа и с другими типами параметров, поэтому их мы описывать
'не будем.
If isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) & " = REG_SZ: " & value
end if
case 2
obj.GetExpandedStringValue RootKey, path, names(i), value
if not isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) & " = REG_EXPAND_SZ: " & value
end if
case 3
obj.GetBinaryValue RootKey, path, names(i), value
for j = lbound(value) to ubound(value)
value(j) = hex(cint(value(j)))
next
if not isnull(names(i)) or not isnull(value) then
objTextFile.WriteLine names(i) &" = REG_BINARY : "& _
join(value, ",")
end if
case 4
obj.GetDWordValue RootKey, path, names(i), value
if not isnull(names(i)) or value then
objTextFile.WriteLine names(i) & " = REG_DWORD : " & _
hex(value)
end if
case 7
obj.GetMultiStringValue RootKey, path, names(i), value
Поделиться:
Популярные книги
Мастер 7
7. Мастер
Фантастика:
фэнтези
боевая фантастика
попаданцы
технофэнтези
аниме
5.00
рейтинг книги
Зауряд-врач
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Эйгор. В потёмках
1. Эйгор
Фантастика:
боевая фантастика
7.00
рейтинг книги
Неудержимый. Книга II
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Невеста на откуп
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Граф
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Кодекс Охотника. Книга XVII
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Все еще не Герой!. Том 2
2. Путешествие Героя
Фантастика:
боевая фантастика
юмористическое фэнтези
городское фэнтези
рпг
5.00
рейтинг книги
Восьмое правило дворянина
8. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
70 Рублей
1. 70 Рублей
Фантастика:
фэнтези
боевая фантастика
попаданцы
постапокалипсис
6.00
рейтинг книги
Газлайтер. Том 9
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Кровь Василиска
1. Кровь Василиска
Фантастика:
фэнтези
попаданцы
аниме
4.25
рейтинг книги
Штурм Земли
8. Пробуждение Системы
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Камень. Книга пятая
5. Камень
Фантастика:
боевая фантастика
6.43