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

时间:2014-05-06 19:12:08

标签: c#

背景

我所从事的公司正在为运行Windows 8 Pro的平板电脑开发类似于信息亭的应用程序(在桌面模式下)。用户不应该能够访问不属于应用程序本身的任何内容:将禁用超级按钮,任务栏将隐藏在应用程序后面等等。

这也意味着用户无法更改网络设置,因此无需担心设备始终与我们保持联系。到目前为止,我已经成功使用移动宽带API来确保只要有可用的移动网络就可以连接设备。它会检测断开事件并尝试再次连接。

问题

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

  • 用户打开右侧的魅力,
  • 点击“设置”
  • 点击网络,
  • 点击“更多电脑设置”,
  • 点击无线,
  • 禁用移动宽带设备。

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

尝试

我尝试了一些不同的方法来强制重新启用3G。他们中的大多数给了我相同的结果:他们认为设备没有错误,但我仍然无法使用它。 Powershell中的Enable-NetAdapter不会抛出错误,Win32_NetworkAdapter的启用方法似乎有效,但没有骰子。

我想也许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);

有没有办法覆盖在"更多个人电脑设置?"

上设置的用户偏好设置

1 个答案:

答案 0 :(得分:1)

我找到了解决这个问题的粗略方法。 请记住,这是无证的,错误的,无耻的和不道德的,最终可能会破坏。客户端知道这一点,但更喜欢限制对操作系统的访问。

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

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

更改这些键并重新启动后,一切似乎都正常。我会重复一遍:你真的不应该这样做,特别是飞机模式的事情。