У меня есть программа на удаленном компьютере, которую я запускаю, и если я изменю сеть, указав другой шлюз и адрес 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