freedom 发表于 2011-7-29 23:02:01

有没有办法通过VPN连接名来获取VPN连接的IP?

用dllcall调用来获取IP过程中会跟PPPOE混淆!
用@ipaddress 来获取,在多网卡下,完全没办法。
有没有办法通过VPN连接名来获取VPN连接的IP?

freedom 发表于 2011-7-30 00:10:02

本帖最后由 freedom 于 2011-7-30 00:11 编辑

我找到一个可以通过WMI直接获取上网网关的。但是没看懂。。。
这个就比较精确,PPTP,PPPOE,NAT都能很精确的获取到上网的网关。

$strComputer = "."
$objWMIService = ObjGet("winmgmts:" & "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colNicConfigs = $objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
                For $objNicConfig In $colNicConfigs
   If Not ($objNicConfig.DefaultIPGateway) = " " Then
      For $i = 0 To UBound($objNicConfig.DefaultIPGateway) -1
      $WG=$objNicConfig.DefaultIPGateway($i)
      Next
EndIf
Next
MsgBox (0,0,$wg)

xayle 发表于 2011-8-3 01:43:50

vpn 的话只能获取到vpn分配IP和网关

xayle 发表于 2011-8-3 01:47:28


#include <rasapi.au3>
$aEntry = _RasEnumEntries()
$aConn = _RasEnumConnections()
If Not $aEntry = "" Then
        If Not $aConn = "" Then
                For $i = 1 To $aConn
                        If $aConn[$i] = "VPN" Then
                                _ArrayDisplay($aConn)
                                $aSen = _RasGetConnectionIpAddresses($aConn[$i])
                                _ArrayDisplay($aSen)
                                MsgBox(0, "Gateway:" & $aSen, "IP:" & $aSen)
                        EndIf
                Next
        EndIf
EndIf


其中用到的udf:http://www.autoitx.com/forum.php?mod=viewthread&tid=17179

freedom 发表于 2011-8-3 03:32:06

回复 4# xayle


    非常感谢,这个例子在WINXP,及WIN7下,通过路由上网已测试成功。明天去试下ADSL。

xayle 发表于 2011-8-3 03:39:57

回复 5# freedom


    如果是ADSL的话
要把 VPN 这里改成 PPPoE

668674 发表于 2020-11-29 14:05:05

学习一下,如何获取

668674 发表于 2020-11-29 14:05:37

学习一下,如何获取

668674 发表于 2020-11-29 14:05:57

为什么这里回复,这么高的分

smallan 发表于 2021-1-6 09:59:36

学习一下,如何获取
页: [1]
查看完整版本: 有没有办法通过VPN连接名来获取VPN连接的IP?