Смена сетевых настроек в WinXP

Тема в разделе "WASM.NETWORKS", создана пользователем Xerx, 13 май 2008.

  1. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Доброго времени суток! Появилась проблема с частой сменой сетевых настроек на ноуте: пользуюсь им в разных сетях, и в каждой свои специфические настройки. Тут и PPPoE, и VPN и WiFi. В ручную, честно говоря, трудновато (особенно вспоминать IPшники DNS серверов).
    И вот вопрос: как можно это автоматизировать? Хотелось бы найти решения 2х проблем: 1) определение, что что-то поменялось в сетевом окружении ну и что именно тоже полезно узнать, 2) непосредственно смена настроек: IP, DSN, шлюз.
    Что-то ничего не нашел дельного. Ткните хоть в Гуголь, хоть в MSDN. Текущая платформа - XP SP3.

    Заранее спасибо!

    P.S. Готовые бинарники прог предлагать только в качестве примеров! Полные исходники тоже не хочу :)
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.298
    Адрес:
    Ukraine
    Таких прог валом. Гугли mobile network switcher и т.п. Или хочется своё сделать? А зачем?
     
  3. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    IceStudent
    Уже гуглю...

    Конечно сам. А зачем? Если бы все пользовались только готовеньким, то ничего толкового бы не вышло. А как же саморазвитие и азарт разработки? Я лучше потрачу недельку-другую на небольшую программу и потом буду ей пользоваться и подстраивать под себя, чем тупо скачаю готовую...

    UPD: Догуглился... Скачал. Завтра потестирую. Но все-таки хотелось бы найти программное решение (код).
     
  4. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Как вариант, использовать netsh: "побывав" в каждой сети, сохранить ее настройки
    в файл, а затем просто применять нужные кликнув на нужном батнике.
     
  5. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    nester7
    Ну как вариант. Но хотелось бы обойтись без сторонних программ. Потому и спрашиваю, что сам хочу написать. С вашей помощью советом и нужным направлением :)
     
  6. nester7

    nester7 New Member

    Публикаций:
    0
    Регистрация:
    5 дек 2003
    Сообщения:
    720
    Адрес:
    Russia
    Xerx
    А это не сторонняя - родная.

    Код (Text):
    1. C:\>netsh interface ip dump > c:\lan.cfg
    2.  
    3. C:\>type c:\lan.cfg
    4.  
    5. # ----------------------------------
    6. # Interface IP Configuration
    7. # ----------------------------------
    8. pushd interface ip
    9.  
    10.  
    11. # Interface IP Configuration for "Local Area Connection"
    12.  
    13. set address name="Local Area Connection" source=static addr=192.168.35.3 mask=255.255.255.0
    14. set address name="Local Area Connection" gateway=192.168.35.2 gwmetric=0
    15. set dns name="Local Area Connection" source=static addr=192.168.35.2 register=PRIMARY
    16. set wins name="Local Area Connection" source=static addr=none
    17.  
    18.  
    19. popd
    20. # End of interface IP configuration
    21.  
    22. C:\>type c:\lan.cfg | netsh
    Вроде того.
     
  7. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    nester7
    Да я знаю, как пользоваться netsh. Под "сторонними" подразумевалось использование любых "не моих" программ.
    Я же писал в первом посте, что самостоятельно хочу разобраться и сделать и прошу только направления куда копать.
    А лезть в отладчик, чтобы выяснить как работает, нет времени: учеба и работа...
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    у меня та же фигня и я сам писал такую прогу.
    создает список профилей, каждый профиль содержит [IP, mask, gateway, dns1, dns2].
    можно на лету перезагружать профили.

    смотри в сторону:
    - GetAdaptersAddresses для получения списка адаптеров
    - GetIpAddrTable,GetInterfaceInfo для получения инфы на адаптер
    - недокументированной SetAdapterIpAddresses и прямой правки значений реестра в ключе
    HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\ для установки новых IP/Mask/GW/DNS

    если интерсно, код могу скинуть.
     
  9. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Great
    Спасибо большое! Вот то, что и просил :) Код не надо - сам попробую. Если только какие затруднения возникнут - напишу здесь.

    UPD: Проблема была именно в знании "недокументированной функции" и ветки реестра. Функции получения эти я уже использовал в свое время. Именно задавать не мог.

    А эта ветка не меняется в разных сервис паках?
     
  10. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    да не должна. это стандартные параметры сервиса драйвера в реестре
     
  11. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Ясно. Потестирую тогда... Еще раз спасибо за курс.
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    сори, она называется SetAdapterIpAddress.
     
  13. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    это мелочи - все равно найду :)