Данные о сетевых настройках  в реестре

Алексей Федоров


Не секрет, что системный реестр (registry) содержит массу информации — очень полезной, полезной и бесполезной. Например, о ряде сетевых настроек.

В секции HKEY_CURRENT_USER мы можем обнаружить данные о текущих постоянных и временных сетевых соединениях — эта информация хранится в подсекциях Network\Persistent и Network\Recent соответственно.

В секции HKEY_LOCAL_MACHINE мы обнаружим информацию о зарегистрированном пользователе — его имени, первичном сетевом провайдере, о том, выполнялась ли проверка регистрации сервером, и т.п.

Информацию о сетевом провайдере вы найдете в секции HKEY_LOCAL_MACHINE, подсекция Enum\Network.

Чтобы не пользоваться утилитой RegEdit, с помощью которой легко испортить содержимое реестра, я написал две небольшие программы на Delphi, текст которых приводится ниже. Первая программа, названная RegNet, выводит информацию из секций HKEY_CURRENT_USER и HKEY_LOCAL_MACHINE. Вторая программа — NetEnum — отображает содержимое подсекции HKEY_LOCAL_MACHINE Enum\Network.

Graphic1.jpg (56717 bytes)

Исходный текст программы RegNet приведен ниже.

Graphic1.gif (17072 bytes)

Как видно из приведенного рисунка, в программе RegNet используются мемо-поле, список, несколько строчных редакторов и две кнопки. При запуске программы информация из секции HKEY_LOCAL_MACHINE\Network\Logon отображается в мемо-поле. При нажатии кнопки Persistent вы получаете список постоянных соединений — активизация каждого элемента списка приводит к появлению в строчных редакторах соответствующей информации. Нажатие кнопки Recent приводит к появлению списка недавно установленных соединений; активизация каждого элемента списка приводит к отображению соответствующей информации.

Graphic2.jpg (59275 bytes)

Как видно из приведенного выше исходного текста программы, здесь нет никаких секретов. Надо отметить только то, что в списке используется два обработчика события OnClick: первый — для списка, отображаемого по нажатии кнопки Persistent, и второй — для списка, отображаемого по нажатии кнопки Recent. Эти обработчики задаются простым присваиванием:

ListBox1.onClick = название_нового_обработчика

Программа NetEnum построена на базе трех компонентов — TreeView, Memo и Edit. Компонент TreeView используется для отображения иерархии содержимого подсекции HKEY_LOCAL_MACHINE Enum\Network. Данные для выбранного пользователем элемента отображаются в компоненте Memo, а текущий маршрут — в компоненте Edit.

Исходный текст программы NetEnum приведен далее.

Graphic2.gif (12192 bytes)

Программа NetEnum активно работает с реестром, извлекая из него древовидную структуру, которая отображается компонентом TreeView. Здесь нет каких-либо хитростей — вся работа выполняется через свойства и методы класса TRegistry. Единственное, что стоит отметить, — это то, как считываются данные для выбранного ключа. Мы используем метод GetValueNames для получения названий всех ключей. Затем в цикле с помощью метода GetDataInfo узнаем тип данных, хранимых в том или ином ключе, и для данных типа String вызываем метод ReadString, который возвращает нам соответствующее значение. Я решил отказаться от отображения данных, хранимых в формате, отличном от String, так как для большинства пользователей они не имеют особого смысла.

Graphic3.jpg (40992 bytes)

При желании вы можете расширить исходный текст программы: например, так, как это показано ниже.

Graphic3.gif (8158 bytes)

Graphic4.jpg (45558 bytes)

Как видно из приведенного рисунка, теперь отображаются также данные, представленные в бинарном формате. При необходимости вы можете расширить данный пример и создать свой собственный вариант утилиты RegEdit.