Hun*_*unv 2 c# vpn networking adapter
我尝试获取所有网络接口,我在窗口中看到所有网络适配器。如果我使用
NetworkInterface.GetAllnetworkInterfaces()
Run Code Online (Sandbox Code Playgroud)
我只得到 LAN 适配器和环回。但是我没有得到我配置的 VPN 连接。VPN 连接是我需要的东西,但我找不到获取它们的方法(即使它们已断开连接)。
是否有类似于NetworkInterface.GetAllnetworkInterfaces()
获取 VPN 连接的东西?
在 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
Run Code Online (Sandbox Code Playgroud)
1:您可以读取此文件的所有内容并使用这样的 RegeX 过滤连接名称\[(.*?)\]
正则表达式示例:
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]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望,我可以帮助你。
归档时间: |
|
查看次数: |
4042 次 |
最近记录: |