6

Я действительно все перепробовал, и нет решения, которое бы мне помогло.

  1. WMI - все отлично, но я не могу изменить IP-адрес, когда нет соединения. О_о Ты шутишь? Как я могу установить соединение без правильного IP-адреса?
  2. IPHelper - ничего не делать. Просто добавив адрес в таблицу. Не работает после перезагрузки.
  3. netsh - глупый способ, я думаю, но хорошо, если у тебя нет других способов, ты можешь попробовать. Прежде чем вы узнаете, что имя сетевого адаптера может содержать международные символы. Кто-то знал, как это работает на самом деле, я имею в виду внутри?
  4. Реестр - работает после перезагрузки. Я не хочу перезагружаться. Может быть кто-то знает, как уведомлять об изменениях записей в реестре?

1 ответ1

2

Я сделал сценарий, который вам может понравиться.
Он использует netsh для достижения того, что вам нужно.

Просто скопируйте код здесь в новый файл и назовите его как-нибудь в configip.bat или как вам угодно (только не называйте это ipconfig :)

Вам нужно будет изменить несколько вещей в скрипте:
IP-адреса, которые вы хотите, маски подсети и шлюзы.
Все DNS-серверы установлены на Google (8.8.8.8), поэтому они, скорее всего, будут работать на вас - если только ваш интернет-провайдер не требует, чтобы вы использовали их. В этом случае используйте те.

У вас есть несколько вариантов для локальной сети (проводная и беспроводная), а также DHCP (автоматически назначенный IP).
Существует также возможность вывести текущую конфигурацию, чтобы вы могли увидеть, как она выглядит с точки зрения netsh.
Это позволит вам с легкостью изменить мой скрипт, так как у вас будут все параметры в файле c:\networkconfig.txt.

Конечно, если вам понадобится дополнительная помощь по модификации, я буду здесь :)


@echo off
cls
:start
echo.
echo IP Configuration
echo.
echo 1. LAN Home
echo 2. LAN Office
echo 3. LAN DHCP
echo 4. WLAN Home
echo 5. WLAN Office
echo 6. Configuration Dump
echo 7. Quit
echo.

set /p userinput=Enter your choice: set option=%userinput:~0,1% if "%option%"=="1" goto homelan if "%option%"=="2" goto officelan if "%option%"=="3" goto landhcp if "%option%"=="4" goto homewan if "%option%"=="5" goto officewan if "%option%"=="6" goto configdump if "%option%"=="7" goto end echo. echo Invalid choice goto start

:homelan echo. echo Applying LAN HOME configuration. echo. netsh interface ip set address "Local Area connection" static 192.168.1.2 255.255.255.0 192.168.1.1 1 netsh interface ip set dns name="Local Area Connection" static 8.8.8.8 goto end

:officelan echo. echo Applying LAN OFFICE configuration. echo. netsh interface ip set address "Local Area connection" static 123.456.78.90 255.255.255.0 123.456.78.254 1 netsh interface ip set dns name="Local Area Connection" static 8.8.8.8 goto end

:landhcp echo. echo Applying DYNAMIC configuration. echo. netsh interface ip set address name="Local Area Connection" source=dhcp netsh interface ip set dns name="Local Area Connection" source=dhcp goto end

:homewan echo. echo Applying WLAN HOME configuration. echo. netsh interface ip set address name="Wireless Network Connection" source=dhcp netsh interface ip set dns name="Wireless Network Connection" source=dhcp goto end

:officewan echo. echo Applying WLAN OFFICE configuration. echo. netsh interface ip set address name="Wireless Network Connection" static 123.456.78.90 255.255.255.0 123.456.78.254 1 netsh interface ip set dns name="Wireless Network Connection" static 8.8.8.8 goto end

:configdump netsh -c interface dump > c:\networkconfig.txt echo. echo Config file "c:\networkconfig.txt" created. echo. echo To restore settings from config dump, use: echo netsh -f networkconfig.txt echo. pause goto end

:end

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .