5

我需要在 Windows XP Embedded 上使用 C# (.NET 2.0) 以编程方式禁用网络适配器。

背景原因:在 PC 上安装蓝牙堆栈后,蓝牙 PAN 适配器阻止了蓝牙管理器程序(在系统托盘中运行)。如果我禁用蓝牙 PAN,那么蓝牙管理器工作正常。

此问题仅在 Windows XP Embedded 计算机上发生。

4

4 回答 4

2

尝试这个:

netsh interface set interface "YOUR_ADAPTOR" DISABLED
于 2011-09-19T10:23:09.063 回答
2

如果您想使用设备管理器中显示的名称,使用 WMI 可能会更容易。一个问题

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

将选择一个带有方法的WMI 对象Disable

给定设备名称“Realtek PCIe GBE 系列控制器”的情况如下:

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.

注意。像Netsh这样需要提升才能执行禁用(但不适用于查询)。

于 2012-04-29T10:51:24.930 回答
2

netsh interface set interface "YOUR_ADAPTOR" DISABLED

注意:请注意 XP,但在 Windows Vista / Windows 7 中,这仅适用于以管理员权限运行的命令提示符(“以管理员身份运行”选项)。

于 2012-04-29T09:44:21.170 回答
0

这取决于您要禁用的内容。如果您尝试禁用 LAN 网络接口,那么在 XP 机器上(据我所知)以编程方式执行此操作的唯一可能性是使用devcon.exe(类似于设备管理器命令行实用程序的程序)。

语法是

devcon disable *hardware ID of your adapter*

您将获得 HWID(以及许多其他详细信息)

wmic NIC

或者如果你可以在你的 XP 机器上访问 Powershell,你可以使用它,因为你可以在那里很好地过滤 ir。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蓝牙适配器和其他设备的效果如何,但我绝对建议您尝试一下,因为它比使用 devcon 和必须查找 HWID 更简单。

于 2013-02-19T11:00:49.130 回答