我尝试获取所有网络接口,我在窗口中看到所有网络适配器。 如果我使用
NetworkInterface.GetAllnetworkInterfaces()
我只获得LAN-Adapters和Loopback。但我没有得到我配置的VPN连接。 VPN连接是我需要的东西,但我找不到获取它们的方法(即使它们已断开连接)。
是否有与NetworkInterface.GetAllnetworkInterfaces()
类似的东西获得VPN-Connections?
答案 0 :(得分:3)
在Windows中,VPN接口存储在拨号电话簿文件中 通过Windows中的网络连接实用程序创建的所有VPN接口将存储在(Windows 7/8)中存储的默认.pbk文件中:
" C:\ Users \%username%\ AppData \ Roaming \ Microsoft \ Network \ Connections \ Pbk \ rasphone.pbk"
此文件包含纯文本,可能如下所示:
[VPN Connection]
Encoding=1
PBVersion=1
Type=2
AutoLogon=0
<...omitted...>
[VPN Connection 2]
Encoding=1
PBVersion=1
Type=2
AutoLogon=0
1:您可以阅读此文件的所有内容,并使用此类\[(.*?)\]
正则表达式示例:
using System.Text.RegularExpressions;
namespace ListVPNConnections
{
class Program
{
static void Main()
{
// VPN adapters are stored in the rasphone.pdk
// "C:\Users\Me\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk"
string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) +
@"\Microsoft\Network\Connections\Pbk\rasphone.pbk";
const string pattern = @"\[(.*?)\]";
var matches = Regex.Matches(System.IO.File.ReadAllText(path), pattern);
foreach (Match m in matches)
System.Console.WriteLine(m.Groups[1]);
}
}
}
2:或使用DotRas等框架。
DotRas示例:
using DotRas;
namespace ListVPNConnections
{
class Program
{
static void Main()
{
// VPN adapters are stored in the rasphone.pdk
// "C:\Users\Me\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk"
string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) +
@"\Microsoft\Network\Connections\Pbk\rasphone.pbk";
RasPhoneBook pbk = new RasPhoneBook();
pbk.Open(path);
foreach (RasEntry entry in pbk.Entries)
System.Console.WriteLine((entry.Name));
}
}
}
我希望,我可以帮助你。