Я пытаюсь отключить / включить сетевой адаптер через MSFT_NetAdapter в ОС Windows 8.
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Delegate," _
& "authenticationLevel=pktPrivacy}\root\standardcimv2")
Set colSettings = objWMIService.ExecQuery("Select * from MSFT_NetAdapter")
For Each objOperatingSystem in colSettings
Wscript.Echo _
"DeviceID: " & objOperatingSystem.DeviceID & vbCrLf & _
"Name: " & objOperatingSystem.Name
objOperatingSystem.Disable
Next
Например используйте только Отключить. MSFT_NetAdapter возвращает «DeviceID» или «Name», и при вызове метода objOperatingSystem.Disable выдается ошибка 0x80041003 «У текущего пользователя нет разрешения на выполнение действия».
Я пытаюсь использовать этот код:
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=Delegate," _
& "authenticationLevel=pktPrivacy}\root\cimv2")
Set colSettings = objWMIService.ExecQuery("Select * from Win32_NetworkAdapter where PhysicalAdapter = true")
For Each objOperatingSystem in colSettings
Wscript.Echo _
"DeviceID: " & objOperatingSystem.DeviceID & vbCrLf & _
"Name: " & objOperatingSystem.Name
objOperatingSystem.Disable
Next
Этот код отлично работает в Windows 7. Сетевой адаптер переключается сразу после кода. В ОС Windows 8 Disable / Enable требуется перезагрузка системы после кода.
Как управлять сетевым адаптером в ОС Windows 8?
Вам нужно работать с правами администратора. Если ваше приложение будет запускаться пользователями без прав администратора, вы можете установить службу, с которой ваше приложение обменивается данными.
Этот код отключает все сетевые адаптеры.
//
// In Windows Vista this can be accomplished through a simple WMI query.
//
try
{
using (var query = new ManagementObjectSearcher("select * from Win32_NetworkAdapter where NetConnectionStatus = 2"))
{
using (var devices = query.Get())
{
foreach (ManagementObject device in devices)
{
try
{
device.InvokeMethod("Disable", null);
}
catch (Exception ex)
{
}
}
}
}
}
catch (Exception ex)
{
}