经常碰到这种情况:自己家里设置了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