Как программно позволить/запретить сетевые интерфейсы? (Windows XP)

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

12
задан tzot 17 September 2008 в 14:22
поделиться

6 ответов

Используя netsh интерфейс набора интерфейса Usage [называют =] IfName [[администратор =] ENABLED|DISABLED [подключение =] CONNECTED|DISCONNECTED [newname =] NewName]

Попробуйте включая все во внешних скобках: netsh соединяют интерфейсом с определенным именем интерфейса = "thename" admin=disabled connect=DISCONNECTED newname = "thename"

См. также эту страницу MS KB: http://support.microsoft.com/kb/262265/ Вы могли следовать за любым из их предложений. Для отключения адаптера необходимо будет определить способ сослаться на устройство. Если не будет нескольких адаптеров с тем же именем на компьютере, Вы могли возможно уйти Описания для интерфейса (или идентификатор PCI работает хорошо). После этого, использование devcon (disable|enable). Devcon является дополнительным консольным интерфейсом для Диспетчера устройств.

10
ответ дан 2 December 2019 в 19:00
поделиться

До сих пор я нашел следующее решение Python:

>>> import wmi; c=wmi.WMI()
>>> o=c.query("select * from Win32_NetworkAdapter where NetConnectionID='wifi'")[0]
>>> o.EnableDevice(1)
(-2147217407,)

который переводится, AFAIU, к универсальной ошибке WMI 0x80041001. Могли быть полномочия.

6
ответ дан 2 December 2019 в 19:00
поделиться

Я, может казаться, не нахожу основного API для управления интерфейсами на MSDN кроме API RAS, но я не думаю, что они относятся к некоммутируемым соединениям. Поскольку Вы предлагаете себя, netsh мог бы быть опцией, предположительно, он также имеет программный интерфейс: http://msdn.microsoft.com/en-us/library/ms708353 (По сравнению с 85) .aspx

Если Вы хотите быть чистым Python, можно, возможно, открыть ряд каналов для общения с процессом netsh.

1
ответ дан 2 December 2019 в 19:00
поделиться

это - VB.Net

Dim objectQuery As New ObjectQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionId IS NOT NULL")
         Dim searcher As New ManagementObjectSearcher(scope, objectQuery)
         Dim os As ManagementObject
         Dim moColl As ManagementObjectCollection = searcher.Get()
         Dim _list As String = ""
         For Each os In moColl
             Console.WriteLine(os("NetConnectionId"))
         Next os

Это получит все интерфейсы на Вас компьютер. Затем можно сделать netsh для отключения его.

netsh соединяют интерфейсом с интерфейсом DISABLED набора

0
ответ дан 2 December 2019 в 19:00
поделиться

devcon инструмент может управлять NIC, но не интерфейсом непосредственно. Это - версия командной строки апплета Диспетчера устройств.

devcon disable (id or portion of name)
devcon enable (id or portion of name)
0
ответ дан 2 December 2019 в 19:00
поделиться

Вы, возможно, должны использовать WMI. Это может служить хорошей начальной точкой: http://msdn.microsoft.com/en-us/library/aa394595.aspx

0
ответ дан 2 December 2019 в 19:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: