我需要在Windows XP Embedded上使用C#(。NET 2.0)以编程方式禁用网络适配器。
背景原因:在PC上安装蓝牙堆栈后,蓝牙PAN适配器会阻止蓝牙管理器程序(在系统托盘中运行)。如果我禁用蓝牙PAN,则蓝牙管理器工作正常。
此问题仅在Windows XP Embedded计算机上发生。
答案 0 :(得分:2)
试试这个:
netsh interface set interface "YOUR_ADAPTOR" DISABLED
答案 1 :(得分:2)
netsh interface set interface "YOUR_ADAPTOR" DISABLED
注意:请注意确保XP,但在Windows Vista / Windows 7中,这仅适用于以管理员权限运行的命令提示符(“以管理员身份运行”选项)。
答案 2 :(得分:2)
如果要使用设备管理器中显示的名称,可能会更容易使用WMI。查询
SELECT * FROM Win32_NetworkAdpater WHERE NName='name from device mnanager'
将使用WMI object方法选择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
类似,这将需要提升才能执行禁用(但不适用于查询)。
答案 3 :(得分:0)
这取决于您要禁用的内容。如果你试图禁用LAN网络接口,那么XP机器上的唯一可能性(据我所知)以编程方式执行此操作是使用devcon.exe
(类似于设备管理器commandlline实用程序的程序)。
语法为
devcon disable *hardware ID of your adapter*
您可以使用
获取HWID(以及许多其他详细信息)wmic NIC
或者如果您可以在XP机器上访问Powershell,您可以使用它,因为您可以在那里很好地过滤。 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要简单得多。