Отключение WiFi-доступа к инфраструктуре в XP - PullRequest
3 голосов
/ 02 июня 2011

У меня есть приложение, которое должно отключить доступ к инфраструктуре, а затем снова включить его (пожалуйста, не спрашивайте, почему. Я работаю под NDA, и было бы трудно объяснить почему, не нарушая этого).Я делаю это с p / Invoke в C #.

Чтобы отключить это, я создаю структуру INTF_ENTRY, устанавливаю guid адаптера, затем устанавливаю dwCtlFlags в 0 и вызываю

uint outFlags;
WZCSAPI.INTF_ENTRY intf = new WZCSAPI.INTF_ENTRY();
intf.wszGuid = adapterGuid;
intf.dwCtlFlags = 0;
WZCSetInterface(null, (uint)INTF_FLAGS.INTF_CM_MASK, ref intf, out outFlags)

Это прекрасно работает и делает именно то, что я ожидаю.Мои настройки XP в разделе «Свойства беспроводного сетевого соединения / Беспроводные сети / Дополнительно» переключаются с «Любая доступная сеть (предпочтительно точка доступа)» на «Только компьютерные (специальные) сети».Это именно то, что мне нужно для этого ...

Перед этим я извлекаю исходные настройки для CM_MASK.

Итак, позже я пытаюсь сделать то же самое, чтобы восстановить его(в данном случае origCMMask = 2):

uint outFlags;
WZCSAPI.INTF_ENTRY intf = new WZCSAPI.INTF_ENTRY();
intf.wszGuid = adapterGuid;
intf.dwCtlFlags = origCMMask;
WZCSetInterface(null, (uint)INTF_FLAGS.INTF_CM_MASK, ref intf, out outFlags)

Но параметр «Любая доступная сеть» не восстанавливается в диалоговом окне настроек и в HKLM \ SOFTWARE \ Microsoft \ WZCSVC \ Parameters \ Interface {guid}\ ControlFlags согласен с тем, что маска CM НЕ установлена ​​обратно на 2, но все еще установлена ​​на 0 (фактическое значение 0x07918000 вместо нормального 0x07818002).

Есть какой-то шаг, который я пропускаю?

Ответы [ 2 ]

2 голосов
/ 22 июня 2011

Вы можете попробовать с WlanSetInterface Function , если у вас Windows XP с SP3, передавая wlan_intf_opcode_bss_type в качестве кода операции.

В качестве альтернативы, вы также можете попробовать вручную выполнить одно из действий командной строки NETSH WLAN, по крайней мере, для проверки подхода.

0 голосов
/ 26 сентября 2013
  1. отключить беспроводную карту (вы можете использовать devcon.exe)
  2. regedit HKLM \ SOFTWARE \ Microsoft \ WZCSVC \ Parameters \ Interface {guid} \ ControlFlags value
  3. включить беспроводную карту (вы можете использовать devcon.exe)
...