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

на главную - закладки

Жанры

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

Поделиться:
Популярные книги

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

В погоне за женой, или Как укротить попаданку

Орлова Алёна
Фантастика:
фэнтези
6.62
рейтинг книги
В погоне за женой, или Как укротить попаданку

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

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

Барон не играет по правилам

Ренгач Евгений
1. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон не играет по правилам

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Имперский Курьер. Том 3

Бо Вова
3. Запечатанный мир
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Имперский Курьер. Том 3

Имперец. Том 1 и Том 2

Романов Михаил Яковлевич
1. Имперец
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Имперец. Том 1 и Том 2

Идеальный мир для Лекаря 12

Сапфир Олег
12. Лекарь
Фантастика:
боевая фантастика
юмористическая фантастика
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 12

Лишняя дочь

Nata Zzika
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Лишняя дочь

Он тебя не любит(?)

Тоцка Тала
Любовные романы:
современные любовные романы
7.46
рейтинг книги
Он тебя не любит(?)

Камень. Книга восьмая

Минин Станислав
8. Камень
Фантастика:
фэнтези
боевая фантастика
7.00
рейтинг книги
Камень. Книга восьмая

Маска зверя

Шебалин Дмитрий Васильевич
5. Чужие интересы
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Маска зверя

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Законы Рода. Том 11

Андрей Мельник
11. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 11