Как отключить (или сбросить) сетевой адаптер программно в C # - PullRequest
5 голосов
/ 19 сентября 2011

Мне нужно отключить сетевой адаптер программно с помощью C # (.NET 2.0) в Windows XP Embedded.

Фоновая причина : после установки стека Bluetooth на ПК, панель Bluetooth PANАдаптер блокирует программу Bluetooth Manager (которая запускается в системном трее).Если я отключу PAN Bluetooth, диспетчер Bluetooth будет работать нормально.

Эта проблема возникает только на машинах с Windows XP Embedded.

Ответы [ 4 ]

2 голосов
/ 29 апреля 2012

netsh interface set interface "YOUR_ADAPTOR" DISABLED

ПРИМЕЧАНИЕ: Обратите внимание на XP, но в Windows Vista / Windows 7 это будет работать только в командной строке, запускаемой с правами администратора («Запуск от имени администратора»)."опция).

2 голосов
/ 29 апреля 2012

Если вы хотите использовать имя, показанное в диспетчере устройств, вероятно, будет проще использовать WMI. Запрос

SELECT * FROM Win32_NetworkAdpater WHERE NName='name from device mnanager'

выберет объект WMI с методом Disable.

Примерно так получилось название устройства «Realtek PCIe GBE Family Controller»:

var searcher = new ManagementObjectSearcher("select * from win32_networkadapter where Name='Realtek PCIe GBE Family Controller'");
var found = searcher.Get();
var nicObj = found.First() as ManagementObject; // Need to cast from ManagementBaseObject to get access to InvokeMethod.

var result = (uint)nicObj.InvokeMethod("Disable"); // 0 => success; otherwise error.

NB . как Netsh для отключения потребуется повышение прав (но не для запроса).

2 голосов
/ 19 сентября 2011

попробуйте это:

netsh interface set interface "YOUR_ADAPTOR" DISABLED
0 голосов
/ 19 февраля 2013

Это зависит от того, что вы пытаетесь отключить. Если вы пытаетесь отключить сетевые интерфейсы ЛВС, то единственная возможность на XP-машинах (насколько я знаю) сделать это программно - это devcon.exe (программа, похожая на утилиту командной строки менеджера устройств).

Синтаксис будет

devcon disable *hardware ID of your adapter*

Вы получаете HWID (вместе со многими другими деталями) с

wmic NIC

или если у вас есть доступ к Powershell на вашем XP-компьютере, вы можете использовать его, потому что вы можете там хорошо фильтровать. wmic NIC ничего не делает, кроме вывода результатов Select * From Win32_NetworkAdapter

gwmi win32_networkAdapter | select Name, PNPDeviceID | where {$_.Name -eq "*your adapter name*"}

или

gwmi -query "select Name, PNPDeviceID from Win32_Networkadapter" | where {$_.Name -eq "*your adapter name*"}

Проблема с использованием WMI для отключения или включения ваших адаптеров заключается в том, что драйвер устройства должен реализовать методы Disable() и Enable(), чтобы вы действительно не могли полагаться на его работу.

Я не знаю, насколько хорошо netsh работает для адаптеров Bluetooth и других устройств, но я определенно рекомендую вам попробовать это, потому что это гораздо проще, чем использовать devcon и искать HWID.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...