У меня есть приложение, которое должно отключить доступ к инфраструктуре, а затем снова включить его (пожалуйста, не спрашивайте, почему. Я работаю под 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).
Есть какой-то шаг, который я пропускаю?