Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: IP через реестр  (Прочитано 22157 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DR.XXX
Помогающий

kz
Offline Offline

« : 21-10-2008 18:40 » 

Привет всем!
У меня вопрос: как узнать IP-адреса, основной шлюз, маску подсети, короче все данные протокола(TCP/IP) через реестр?

Спасибо за внимание!
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-10-2008 18:56 » 

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DR.XXX
Помогающий

kz
Offline Offline

« Ответ #2 : 22-10-2008 17:03 » 

RXL, спасибо!
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 28-10-2008 12:35 » 

а вот у меня в данной ветке лежат три ключа ,

{73CAEE20-9170-4FF8-8365-6108E870C68E}
{F3F88CD4-95A8-45D1-9DC3-69B4DEC74346}
{FDD88E26-5DED-4C0E-A138-8FA99CA1F820}

в каждом несколько параметров. Визуально то я всё нахожу, а какой именно выбирать программно ? )

Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 28-10-2008 16:29 » 

Леш, к примеру:

EnableDHCP = 0
IPAddress = 0.0.0.0

Логично, что эта ветка исключается.

Я пробовал поиском работать, но не нашел, где в реестре еще используется UID, заданный для этого подключения.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #5 : 28-10-2008 19:57 » 

то есть, в принципе, перечисляю все {73CA.....8E} , смотрю везде IPAddress !=0.0.0.0
Это всё ясно.
А если найдётся два адреса ?
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 28-10-2008 20:47 » 

Гдык - а что мешает системе иметь 2 адреса (на разных интерфейсах)?
Или нужно узнать "какой главнее"?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #7 : 28-10-2008 20:55 » 

Kivals, вот вот )) Или тут предоставить человеку выбор - по имени интерфейса ?
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 28-10-2008 21:04 » 

Собственно - мы тут по-моему вплотную подошли к вопросу "а зачем это нужно"? (и почему именно через реестр? Если я правильно помню - то API-шные функции дают намного больше возможностей: можно, например, узнать через какой именно интерфейс будет обращение к конкретному серверу)
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #9 : 28-10-2008 21:16 » 

например, была такая задача - клиентам (людям) надо было задать в клиенте-программе адрес сервера в локальной сети. Для "удобства" я делал кнопку с вызовом ipconfig /all  , а вот сразу бы достать IP было бы удобнее
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 28-10-2008 21:30 » 

Раньше я бы тоже сделал через "ipconfig /all", сейчас я бы делал это через WSH & WMI Улыбаюсь
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 28-10-2008 21:31 » 

а это хто такие
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 28-10-2008 21:47 » 

Windows Scripting Host & Windows Management Instrumentation
Вот пример на vbs, который выводит список интерфейсов с ip-адресами (я больше люблю js, но этот пример нашел в дебрях интернета и лень было переводить)
Код:
Option Explicit
Dim objWMIService
Dim objNetAdapter
Dim strComputer
Dim colNetAdapters
Dim addr
strComputer = "localhost"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapter in colNetAdapters
     For Each addr in objNetAdapter.IPAddress
         Wscript.Echo "" & objNetAdapter.Description & " - " & addr
     Next                                                                                     
Next

сохранить в каком-то файле (например: print_ip.vbs). Запускать: если в коммандной строке - 'cscript print_ip.vbs' ; если в графическом интерфейсе - 'wscript print_ip.vbs' или просто запустить сохраненный файл (во втором случае для каждого интерфейса будет выведено окно сообщения, по-очереди для всех)

Как легко увидеть в коде - абсолютно легко можно посмотреть этот список на любом компьютере в сети, к которому имеем доступ для WMI (в первом приближении - при наличии админских прав): strComputer = "localhost" меняем на strComputer = "192.168.0.***" или имя компа...
« Последнее редактирование: 28-10-2008 22:15 от Kivals » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #13 : 28-10-2008 21:54 » 

понятно
а как через тот же реестр имя адаптера найти ? Видимо, как-то по RegisterAdapterName
Записан

Kivals
Команда клуба

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 28-10-2008 22:11 » 

Поиск по GUID из раздела HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
нашел совпадения в ключе
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318} (Сетевые платы)
но например VPN там нету - значит нужно искать где-то еще...
Записан
zubr
Гость
« Ответ #15 : 29-10-2008 05:04 » 

Припоминаю, надо вызывать функции SetupDiGetClassDevs, SetupDiEnumDeviceInfo. Используя эти функции можно получить список устройств в системе или устройства по типу. В msdn вроде есть пример.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines