4

このコードは Windows 7 ではうまく機能しますが、Windows 8 ではうまく機能しません。解決方法がわかりません。

ネットワーク再起動機能

    private static void RestartNetWork()
    {
        string manage = "SELECT * FROM Win32_NetworkAdapter";
        ManagementObjectSearcher searcher = new ManagementObjectSearcher(manage);
        ManagementObjectCollection collection = searcher.Get();
        List<string> netWorkList = new List<string>();
        foreach (ManagementObject obj in collection)
        {
            if (obj["Name"].ToString() == "Qualcomm Atheros AR5B97 Wireless Network Adapter")
            {                
                DisableNetWork(obj);//disable network
                Thread.Sleep(3000);
                EnableNetWork(obj);//enable network
                return;
            }
        }
    }

ネットワークを無効にする機能

/// <summary>
        /// 禁用网卡
        /// </summary>5
        /// <param name="netWorkName">网卡名&lt;/param>
        /// <returns></returns>
        private static bool DisableNetWork(ManagementObject network)
        {
            try
            {
                network.InvokeMethod("Disable", null);
                return true;
            }
            catch
            {
                return false;
            }
        }

ネットワークを有効にする機能

/// <summary>
        /// 启用网卡
        /// </summary>
        /// <param name="netWorkName">网卡名&lt;/param>
        /// <returns></returns>
        private static bool EnableNetWork(ManagementObject network)
        {
            try
            {
                network.InvokeMethod("Enable", null);
                return true;
            }
            catch
            {
                return false;
            }
        }
4

5 に答える 5

2

Win32_NetworkAdapter WMI クラスを使用していると仮定して、現在のプロセスが昇格モードで実行されていることを確認します。それに加えて、あなたがやっているようにすべての例外をキャッチするのを避け、代わりにスローされる可能性のある最終的な例外を分析して、追加の詳細を確認したい場合があります。

于 2013-03-20T13:31:53.167 に答える
1

私は自分のコメントに対する答えを見つけたので、同様の問題を抱えている人のために共有したいと思いました...

サービスを「有効にする」のではなく、開始モードを手動に変更し(必要に応じて自動も使用できます)、問題を解決しました。

ManagementBaseObject startMode = service.GetMethodParameters("ChangeStartMode");
startMode["startmode"] = "Manual";
service.InvokeMethod("ChangeStartMode", startMode, null);

これは私にとってはうまくいきました!

于 2013-12-12T14:57:08.297 に答える
0

私はちょうど同じ問題を抱えていました。Windows 8 で管理者として同じアプリを実行すると、すべてが正常に機能し始めたことがわかりました。

于 2014-12-09T10:31:34.943 に答える
0

Win32_NetworkAdapter は非推奨です。Windows 8 / Server 2012 以降では、MSFT_NetAdapter を使用する必要があります。 https://msdn.microsoft.com/en-us/library/hh968170(v=vs.85).aspx

ステートメント: 「Win32_NetworkAdapter クラスは非推奨です。代わりに MSFT_NetAdapter クラスを使用してください。」 https://msdn.microsoft.com/en-us/library/aa394216%28v=vs.85%29.aspx

于 2015-03-09T18:44:21.743 に答える