此代码适用于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">网卡名</param>
/// <returns></returns>
private static bool DisableNetWork(ManagementObject network)
{
try
{
network.InvokeMethod("Disable", null);
return true;
}
catch
{
return false;
}
}
启用网络的功能
/// <summary>
/// 启用网卡
/// </summary>
/// <param name="netWorkName">网卡名</param>
/// <returns></returns>
private static bool EnableNetWork(ManagementObject network)
{
try
{
network.InvokeMethod("Enable", null);
return true;
}
catch
{
return false;
}
}
答案 0 :(得分:2)
假设您使用的是Win32_NetworkAdapter WMI类,请确保当前进程正在elevated mode中运行。最重要的是,您可能希望避免像正在执行的那样捕获每个异常,而是分析可能抛出的最终异常,以获取更多详细信息。
答案 1 :(得分:1)
我找到了我的评论的答案,并希望与任何有类似问题的人分享......
我没有“启用”该服务,而是将启动模式更改为手动(如果您愿意,也可以使用自动),这解决了我的问题。
ManagementBaseObject startMode = service.GetMethodParameters("ChangeStartMode");
startMode["startmode"] = "Manual";
service.InvokeMethod("ChangeStartMode", startMode, null);
这对我有用了!
答案 2 :(得分:1)
我的代码在Windows 10中运行良好所以我认为win8可用,但请记住它需要管理员权限,请记住通过右键单击以管理员身份运行。 这是我的代码:
if (manage["Name"].ToString() == "Realtek RTL8192DE Wireless LAN 802.11N PCI-E NIC MAC1")
{
Console.WriteLine(manage["Name"].ToString() + "\n");
try
{
//先enable再disable且要管理员权限执行
manage.InvokeMethod("Enable", null);
manage.InvokeMethod("Disable", null);
Console.WriteLine("设置成功");
}
catch
{
Console.WriteLine("设置失败");
}
}
}
答案 3 :(得分:0)
我刚才遇到了同样的问题。事实证明,当我在Windows 8中以管理员身份运行相同的应用程序时,一切都开始正常运行。
答案 4 :(得分: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