gpt4 book ai didi

c# - 在 XP 中禁用 WiFi 基础架构访问

转载 作者:可可西里 更新时间:2023-11-01 09:31:19 28 4
gpt4 key购买 nike

我有一个应用程序需要禁用基础结构访问然后重新启用它(请不要问为什么。我在保密协议(protocol)下,如果不违反保密协议(protocol)很难解释原因)。我正在使用 C# 中的 p/Invoke 执行此操作。

要禁用它,我正在创建 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 设置从“任何可用网络(首选接入点)”切换到“仅限计算机到计算机(ad hoc)网络”。这正是我需要它做的......

在执行此操作之前,我检索了 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 Mask 没有设置回 2,但是仍然设置为 0(实际值为 0x07918000,而不是正常的 0x07818002)。

我是否遗漏了某些步骤?

最佳答案

你可以试试 WlanSetInterface Function , 如果您有带 SP3 的 Windows XP,将 wlan_intf_opcode_bss_type 作为 OpCode 传递。

或者,您也可以使用 NETSH WLAN command line actions 之一手动尝试,至少要验证该方法。

关于c# - 在 XP 中禁用 WiFi 基础架构访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216751/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com