Назад | Перейти на главную страницу

Смена сетевого подключения без зависания программы

У меня есть программа на удаленном компьютере, которую я запускаю, и если я изменю сеть, указав другой шлюз и адрес DNS в адаптере, программа будет работать как обычно, проблем не возникнет.

Однако когда я выполняю переключение сети из командной строки, как показано ниже:

netsh int ip set address "Local Area Connection" static 169.254.144.10 255.255.255.0 169.254.144.200 1
netsh int ip set dns "Local Area Connection" static 169.254.144.200 primary validate=no

Это заставит программу зависать в Windows 8, в Windows 7 она будет работать нормально, пока вы не попытаетесь закрыть окно, только тогда она скажет, что не отвечает.

Пытался сбросить конфигурацию и восстановить (netsh interface dump и netsh exec dumpfile.dat), но я не смог протестировать этот метод, так как в дампированном файле нет упоминания о шлюзе или dns - понятия не имею, почему он не включен туда, поскольку это важно ...

Протестировал это поведение на других компьютерах. Мне кажется, что изменение с помощью команд как-то более своевременно, поскольку, когда я запускаю скрипт с указанными выше командами, я вижу, что некоторые связанные значки в Интернете на моей панели задач отключаются, а затем снова подключаются. Когда я переключаюсь вручную, они даже не мигают. Я предполагаю, что отображение дисков отключается на мгновение, и поэтому программа зависает ...

Так в чем же разница между изменением сети «вручную» и командой netsh? Как изменить его из команды, чтобы добиться переключения таким же образом?


Программа имеет текстовый пользовательский интерфейс, открытый в командном окне. Его нужно запускать с подключенного диска, поскольку cmd не поддерживает пути UNC.

Детали, когда он зависает:

Problem signature:
  Problem Event Name:   InPageError
  Error Status Code:    c000020c
  Faulting Media Type:  00000000
  OS Version:   6.1.7601.2.1.0.256.48
  Locale ID:    1048
  Additional Information 1: 9189
  Additional Information 2: 9189fca27356e4825c153d6761541c45
  Additional Information 3: 5c2b
  Additional Information 4: 5c2b4817a0e33e756d6f79da7728e015

Удаленный компьютер - это сервер Windows 2008, но я запускаю программу локально.

Мой файл дампа:

#========================
# Interface configuration
#========================
pushd interface 


popd
# End of interface configuration



# ----------------------------------
# IPHTTPS Configuration
# ----------------------------------
pushd interface httpstunnel

reset


popd
# End of IPHTTPS configuration



# ----------------------------------
# IPv4 Configuration
# ----------------------------------
pushd interface ipv4

reset
set global icmpredirects=enabled
add route prefix=0.0.0.0/0 interface="Local Area Connection" nexthop=169.254.144.200 metric=1 publish=Yes
add address name="VirtualBox Host-Only Network" address=192.168.56.1 mask=255.255.255.0
add address name="VMware Network Adapter VMnet1" address=192.168.6.1 mask=255.255.255.0
add address name="VMware Network Adapter VMnet8" address=192.168.111.1 mask=255.255.255.0
add address name="Local Area Connection" address=169.254.144.155 mask=255.255.255.0


popd
# End of IPv4 configuration



# ----------------------------------
# IPv6 Configuration
# ----------------------------------
pushd interface ipv6

reset
set interface interface="Teredo Tunneling Pseudo-Interface" forwarding=disabled advertise=disabled mtu=1280 metric=0 siteprefixlength=0 nud=disabled routerdiscovery=disabled managedaddress=disabled otherstateful=disabled weakhostsend=disabled weakhostreceive=disabled ignoredefaultroutes=disabled advertisedrouterlifetime=0 advertisedefaultroute=disabled currenthoplimit=0 forcearpndwolpattern=disabled enabledirectedmacwolpattern=disabled


popd
# End of IPv6 configuration



# ----------------------------------
# ISATAP Configuration
# ----------------------------------
pushd interface isatap



popd
# End of ISATAP configuration



# ----------------------------------
# 6to4 Configuration
# ----------------------------------
pushd interface 6to4

reset



popd
# End of 6to4 configuration



# ----------------------------------
# ISATAP Configuration
# ----------------------------------
pushd interface isatap



popd
# End of ISATAP configuration


#========================
# Port Proxy configuration
#========================
pushd interface portproxy

reset


popd

# End of Port Proxy configuration



# ----------------------------------
# TCP Configuration
# ----------------------------------
pushd interface tcp

reset

set global rss=enabled chimney=automatic autotuninglevel=normal congestionprovider=none ecncapability=disabled timestamps=disabled netdma=enabled dca=enabled

Dump has failed when retreiving chimneyapplication  settings.

Dump has failed when retreiving chimneyapplication  settings.

Dump has failed when retreiving chimneyapplication  settings.

Dump has failed when retreiving chimneyapplication  settings.


popd
# End of TCP configuration



# ----------------------------------
# Teredo Configuration
# ----------------------------------
pushd interface teredo
set state type=client servername=teredo.ipv6.microsoft.com. servervirtualip=0.0.0.0



popd
# End of Teredo configuration



# ----------------------------------
# 6to4 Configuration
# ----------------------------------
pushd interface 6to4

reset



popd
# End of 6to4 configuration