VBA获取连接的wifi密码

2021-03-03 15:53:34 浏览数 (1)

经常碰到这种情况:自己家里设置了wifi密码,电脑手机连接后,过段时间很容易忘记,有时候朋友过来问起来就要回忆半天!

电脑或手机既然能够自动连接已经连接过的wifi,说明密码已经被保存起来了,只是一般情况下我们不知道如何找到这个保存的文件,最近发现一个使用cmd命令获取保存的wifi密码功能,但是cmd命令毕竟不熟悉,如果每次都去使用cmd命令的话,还是得临时去查。

不过VBA能够和cmd命令交互,所以使用VBA把cmd命令封装起来,使用起来就方便多了。

又想到VBS直接双击就能运行的便捷,而且语法和VBA几乎一样,就又小改一下做成了个VBS,直接双击就可以了,效果:

这里就直接贴代码,原理其实我也没怎么去研究!

只要把下面的代码复制到一个txt文档,然后把文档的后缀修改为.vbs即可:

代码语言:javascript复制
    Dim retWIFI, retPassword 
    Dim ret
    
    ret = GetActiveWifiPassword(retWIFI, retPassword)
    If Len(ret) Then
        MsgBox ret, vbCritical
    Else
        MsgBox "wifi账号:" & retWIFI &  "  密码:" & retPassword
    End If



Function GetActiveWifiPassword(retWIFI, retPassword)
    'cmd命令设置为UTF8编码
'    GetCmdResult "chcp 65001"
    
    Dim ret
    
    ret = GetActiveWifi(retWIFI)
    If Len(ret) Then
        GetActiveWifiPassword = ret
    Else
        ret = GetWifiPassword(retWIFI, retPassword)
        
        If Len(ret) Then
            GetActiveWifiPassword = ret
        End If
    End If
End Function

Function GetWifiPassword(sWIFI, retPassword)
    Dim ret
    
    '获取连接的wifi账号密码
    ret = GetCmdResult("chcp 65001 & netsh wlan show profile name=" & sWIFI & " key=clear | findstr Key")
    If Len(ret) = 0 Then
        GetWifiPassword = "netsh wlan show profile没有找到[Key]."
        Exit Function
    End If
    
    ret = Mid(ret, InStr(ret, "Key"))
    
    If InStr(ret, ": ") Then
        retPassword = Split(ret, ": ")(1)
    Else
        GetWifiPassword = "Key Content分割符号不是[: ]。"
    End If
End Function

'获取活动wifi帐号
Function GetActiveWifi(retWIFI)
    Dim ret
    ret = GetCmdResult("netsh wlan show interfaces | findstr SSID")
    
    Dim tmp
    tmp = Split(ret, vbNewLine)
    
    Dim i
    For i = 0 To UBound(tmp)
        ret = CStr(tmp(i))
        If InStr(ret, "SSID") Then
                If InStr(ret, ": ") Then
                    '获取连接的wifi账号
                    retWIFI = Split(ret, ": ")(1)
                Else
                    GetActiveWifi = "SSID分割符号不是[: ]。"
                End If
            Exit Function
        End If
    Next
    
    GetActiveWifi = "没有找到SSID。"
End Function

Function GetCmdResult(sCmd)
    Dim ws
    Dim ws_exec
    Dim str
    Dim ret
    
    Set ws = CreateObject("Wscript.Shell")
   
    Set ws_exec = ws.Exec("cmd.exe /c """ & sCmd & """")

    GetCmdResult = ws_exec.StdOut.ReadAll
    
    Set ws_exec = Nothing
    Set ws = Nothing
End Function

0 人点赞