2

我正在使用NetworkInterface.GetAllNetworkInterfaces()来获取 PC 上的所有接口。但是,这似乎只返回“活动”接口。如何在 .NET 中找到“非活动”网络接口,例如未连接的 VPN、禁用的 NIC 等。

我想在“控制面板”->“网络连接”中按他们的名字找到它们。因此,例如,如果我有一个名为“我的工作”的 VPN,我希望能够使用“我的工作”这个名称找到它。

使用 Win32_NetworkAdapterConfiguration 似乎不是一个选项,因为它不会返回“网络连接”中显示的名称(据我所知)。

非常感谢,

RB。

4

4 回答 4

2

好的,这是我用来检测命名 VPN 的一个 hacky 解决方案。如果由于某种原因(包括网络连接断开、VPN 不存在等)无法连接到 VPN,它会抛出错误。

要测试的特定错误代码包括:

远程访问错误 800 - 无法建立 VPN 连接。
VPN 服务器可能无法访问,或者可能没有为此连接正确配置安全参数。

远程访问错误 623 - 系统找不到此连接的电话簿条目。

它并没有真正回答我提出的问题(尽管它对于现实生活中的问题来说已经足够好了)。

Dim p As New Process

p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.StartInfo.RedirectStandardError = True
p.StartInfo.FileName = "rasdial.exe"
p.StartInfo.Arguments = """Company HQ"""
p.Start()
If Not p.WaitForExit(My.Settings.VpnTimeout) Then
    Throw New Exception( _
String.Format("Connecting to ""{0}"" VPN failed after {1}ms", sVpn, My.Settings.VpnTimeout))
End If

If p.ExitCode <> 0 Then
    Throw New Exception( _
String.Format("Failed connecting to ""{0}"" with exit code {1}. Errors {2}", sVpn, p.ExitCode, p.StandardOutput.ReadToEnd.Replace(vbCrLf, "")))
End If
于 2008-12-08T16:24:18.703 回答
1

这个使用 WMI 的示例可能会帮助您了解大部分情况(顺便说一下关于 C# 的问题!):

using System.Management;

string query = "SELECT * FROM Win32_NetworkAdapterConfiguration";
ManagementObjectSearcher moSearch = new ManagementObjectSearcher(query);
ManagementObjectCollection moCollection = moSearch.Get();

// Every record in this collection is a network interface
foreach (ManagementObject mo in moCollection)
{
    // Do what you need to here....
}

为了测试适配器是否启用,这个链接应该有帮助:

Win32_NetworkAdapterConfiguration 类

编辑:您可能对Win32_NetworkAdapter类有更多的运气 - 它具有 Caption 和 Description 属性,可以为您提供所需的内容。有一种方法可以将此信息与我提到的上一课联系起来,以获取 IP 地址等 - 如果没有进一步研究,不确定它是什么,但如果您需要知道,请告诉我。

于 2008-12-08T14:50:49.017 回答
1
RasDialer dialer = new RasDialer();
ReadOnlyCollection<RasConnection> connections = dialer.GetActiveConnections();

foreach (RasConnection connection in connections)
{
    // Do what you want to with the connections.
}

这将检索 Windows 正在使用的所有连接的拨号条目(包括 VPN 连接)及其相关句柄和其他信息。

该组件是 CodePlex 上 DotRas 项目的一部分。

http://www.codeplex.com/DotRas

于 2009-03-25T15:46:11.050 回答
0

好的-最后的努力:)

Win32_NetworkConnection类怎么样- 我很确定这将处理 VPN 连接

于 2008-12-08T16:28:28.570 回答