繁体   English   中英

通过WMI或注册表更改移动宽带设备属性?

[英]Changing Mobile Broadband Device Properties via WMI or Registry?

是否可以通过WMI或通过注册表更改移动宽带设备设置?

我试图创建一个将在Windows 10上运行的最终界面(最终在Windows 7、8和XP Embedded上运行),以仅更改一些设置,即“自动连接”和“允许漫游”。

在Internet上和SO进行了一些研究之后: C#阅读Windows Mobile Broadband连接属性我想我可以通过WMI或注册表编辑来做到这一点,但我只是没有看到它。 Win32_NetworkAdapter类似乎没有提供执行此操作的正确工具。

我尝试使用ProcMon来查看注册表编辑,但是我很难确定它。

在Windows 7上,我发现最好的方法是创建一个使用适当参数调用netsh.exe的进程。 我不确定Windows 10上会有什么不同。

这是一个控制台应用程序,可检索一些数据。

    /// <summary>
    /// The process instance used to execute netsh.
    /// </summary>
    private static readonly Process NetshProcess = new Process
                                             {
                                                 StartInfo =
                                                     {
                                                         FileName = "netsh.exe",
                                                         RedirectStandardOutput = true,
                                                         UseShellExecute = false
                                                     }
                                             };

    /// <summary>
    /// The main program.
    /// </summary>
    /// <returns>
    /// Nonzero if error.
    /// </returns>
    public static int Main()
    {
        // The first step is to get the subscriber ID.
        NetshProcess.StartInfo.Arguments = "mbn show ready *";
        var netshResultStrings = RunNetShProcess();
        var subIdStr = netshResultStrings.ElementAtOrDefault(5);
        var iccIdStr = netshResultStrings.ElementAtOrDefault(6);
        string lastValue;
        if (subIdStr == null || (lastValue = subIdStr.Trim(' ').Split(':').LastOrDefault()) == null)
        {
            throw new Exception("Could not determine Subscriber ID.");
        }

        var subscriberIdStr = lastValue.Trim(' ');
        Console.WriteLine("The subscriber ID is " + subscriberIdStr);
    }

    /// <summary>
    /// Run the netsh process.  StartInfo.Arguments for NetshProcess must be properly set prior to making this call. 
    /// </summary>
    /// <returns>
    /// An string array containing one element for each line of text returned by netsh.
    /// </returns>
    private static string[] RunNetShProcess()
    {
        NetshProcess.Start();
        var netshResult = NetshProcess.StandardOutput.ReadToEnd();
        if (!NetshProcess.WaitForExit(10000))
        {
            throw new Exception("Netsh command '" + NetshProcess.StartInfo.Arguments + "' did not exit.");
        }

        var netshResultStrings = netshResult.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
        return netshResultStrings;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM