Чтение онлайн

на главную

Жанры

Недокументированные и малоизвестные возможности 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
рейтинг книги
Мастер 7

Зауряд-врач

Дроздов Анатолий Федорович
1. Зауряд-врач
Фантастика:
альтернативная история
8.64
рейтинг книги
Зауряд-врач

Эйгор. В потёмках

Кронос Александр
1. Эйгор
Фантастика:
боевая фантастика
7.00
рейтинг книги
Эйгор. В потёмках

Неудержимый. Книга II

Боярский Андрей
2. Неудержимый
Фантастика:
городское фэнтези
попаданцы
5.00
рейтинг книги
Неудержимый. Книга II

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

Граф

Ланцов Михаил Алексеевич
6. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Граф

Кодекс Охотника. Книга XVII

Винокуров Юрий
17. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XVII

Все еще не Герой!. Том 2

Довыдовский Кирилл Сергеевич
2. Путешествие Героя
Фантастика:
боевая фантастика
юмористическое фэнтези
городское фэнтези
рпг
5.00
рейтинг книги
Все еще не Герой!. Том 2

Восьмое правило дворянина

Герда Александр
8. Истинный дворянин
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восьмое правило дворянина

70 Рублей

Кожевников Павел
1. 70 Рублей
Фантастика:
фэнтези
боевая фантастика
попаданцы
постапокалипсис
6.00
рейтинг книги
70 Рублей

Газлайтер. Том 9

Володин Григорий
9. История Телепата
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Газлайтер. Том 9

Кровь Василиска

Тайниковский
1. Кровь Василиска
Фантастика:
фэнтези
попаданцы
аниме
4.25
рейтинг книги
Кровь Василиска

Штурм Земли

Семенов Павел
8. Пробуждение Системы
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Штурм Земли

Камень. Книга пятая

Минин Станислав
5. Камень
Фантастика:
боевая фантастика
6.43
рейтинг книги
Камень. Книга пятая