gpt4 book ai didi

c# - 重置网络连接

转载 作者:行者123 更新时间:2023-11-30 14:32:40 27 4
gpt4 key购买 nike

使用 C#/.NET 重置网络连接的最佳方法是什么?

我的公司有几台机器与客户通过各种方式(3G、wifi、以太网电缆)连接,有时(尤其是 3G)向 Windows 报告他们仍在连接,但实际上并未连接。我有办法检查连接是否真的存在,但我正在努力重置它们。这是一个问题:

var searcher = new ManagementObjectSearcher("select * from Win32_NetworkAdapter");
var managementObject = searcher.Get();
foreach (ManagementObject obj in managementObject)
{
var name = obj.Properties["Name"].Value.ToString();
Console.WriteLine(name);
obj.InvokeMethod("Disable", null);
obj.InvokeMethod("Enable", null);
}

如您所见,这将遍历所有网络适配器并重置它们,这是我不想做的。此外,一些适配器不接受 null 参数。

我可以获得我想要的 NetworkInterface 对象:

var interfaces = NetworkInterface.GetAllNetworkInterfaces().Where(ni => ni.IsReceiveOnly == false && 
ni.OperationalStatus == OperationalStatus.Up && ni.NetworkInterfaceType != NetworkInterfaceType.Loopback);

但是 NetworkInterface 类似乎没有 Start()、Stop()、Reset() 等方法。我从这里去哪里?

最佳答案

经过一些搜索和实验,我找到了这篇博文:
Disable/Enable Network Connections Under Vista

这是一种更好的方法。

它的唯一用途是使用名为 mgmtclassgen.exe 的实用程序来生成围绕 WMI Win32_NetworkAdapter 类的包装类。在您选择的文件夹的开发人员命令提示符下使用以下命令:

mgmtclassgen Win32_NetworkAdapter -p NetworkAdapter.cs

生成 NetworkAdapter.cs 后,您可以将其导入到新项目中,将 System.Management.dll 添加到您的项目引用中,然后使用以下代码禁用或启用您选择的适配器:

SelectQuery query = new SelectQuery("Win32_NetworkAdapter", "NetConnectionStatus=2");
ManagementObjectSearcher search = new ManagementObjectSearcher(query);
foreach(ManagementObject result in search.Get())
{
NetworkAdapter adapter = new NetworkAdapter(result);

// Identify the adapter you wish to disable here.
// In particular, check the AdapterType and
// Description properties.

// Here, we're selecting the LAN adapters.
if (adapter.AdapterType.Equals("Ethernet 802.3"))
{
adapter.Disable();
}
}

另请记住,您的程序必须在任何启用 UAC 的系统上以管理员身份运行 - 为此,建议创建应用程序 list 。您可以通过将 list 文件中的 requestedExecutionLevel 条目更改为此:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

关于c# - 重置网络连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18075660/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com