以编程方式启用Windows 8 Pro移动宽带设备

本文关键字:移动 Pro 编程 方式 启用 Windows | 更新日期: 2023-09-27 18:02:14

背景

我所在的公司正在为运行Windows8Pro(桌面模式(的平板电脑开发一个类似售货亭的应用程序。用户不应该能够访问任何不是应用程序本身的东西:魅力将被禁用,任务栏将隐藏在应用程序后面,等等。

这也意味着用户不应该能够更改网络设置,让设备始终与我们连接。到目前为止,我成功地使用了移动宽带API来确保设备在有移动网络可用时连接。它将检测断开连接事件并尝试再次连接。

问题

虽然用户不应该这样做,但我正在考虑用户遵循以下步骤的情况:

  • 用户打开右侧魅力
  • 单击"设置">
  • 点击网络
  • 单击"更多电脑设置">
  • 单击"无线",然后
  • 禁用移动宽带设备

我希望能够以编程方式恢复并再次启用它。

尝试

我尝试了一些不同的方法来强制3G重新启用。它们中的大多数都给了我相同的结果:它们应该在没有错误的情况下启用设备,但我仍然无法使用它。Powershell中的enable NetAdapter不会引发错误,Win32_NetworkAdapter的enable方法似乎有效,但没有骰子。

我想IMbnRadio::SetSoftwareRadioState方法可能就是我想要的,但当设备被禁用时,我无法使用它。方法IMbnInterfaceManager::GetInterfaces引发COMException,声称找不到元素(HRESULT=0x80070490(。

MbnInterfaceManager mbnInterfaceManager = new MbnInterfaceManager();
IMbnInterfaceManager interfaceManager = (IMbnInterfaceManager)mbnInterfaceManager;
// The following line throws a COMException:
IMbnInterface[] interfaces = (IMbnInterface[])interfaceManager.GetInterfaces(); 
mobileInterface = interfaces[0];
mobileRadio = (IMbnRadio)mobileInterface;
uint requestId;
mobileRadio.SetSoftwareRadioState(MBN_RADIO.MBN_RADIO_ON, out requestId);

有没有一种方法可以覆盖在"更多电脑设置"上设置的用户偏好?

以编程方式启用Windows 8 Pro移动宽带设备

我找到了一个粗略的方法来解决这个问题请记住,这是非法的、错误的、无耻的和不道德的,最终可能会失败。客户端知道这一点,但更倾向于限制对操作系统的访问。

案例中的设置保存在注册表中。至少在我检查过的计算机中,它存储在HKLM''SYSTEM''CurrentControlSet''Control''Class''{4d36e972-e325-11ce-bfc1-08002be10318}''0022中一个名为RadioOff的键中。

飞行模式设置也存储在注册表中,但存储在不同的位置。它位于HKLM''SYSTEM''CurrentControlSet''Control''RadioManagement''SystemRadioState的一个名为(默认(的项中。

在更改这些密钥并重新启动后,一切似乎都很好。不过我要重复一遍:你真的不应该这样做,尤其是在飞行模式方面。