在现代办公环境中,网络连接的稳定性和便捷性对于员工的工作效率至关重要。尤其是对于需要频繁使用互联网资源的销售人员来说,网络的可用性直接影响到他们的工作表现。本文将介绍一种使用VBScript自动设置IE代理的方法,以解决VPN断开后IE无法访问互联网的问题。
公司最近为所有销售人员更换了笔记本电脑,并为他们配置了VPN连接到公司网络。由于公司网络中使用了代理服务器,这导致一些用户在断开VPN连接后仍然希望使用IE浏览器访问互联网时遇到了问题。
多次被问及为什么用户在未连接VPN的情况下无法连接到互联网。因此,决定寻找一种方法,能够自动更新IE中的代理开关,使得VPN连接的任何变化对用户来说几乎是透明的。
花费了相当长的时间在Scripting Guy网站上寻找有用的代码片段,但没有找到包含需要的所有内容的文章,所以编写了这个脚本。
只需将此代码复制到记事本中,将"SERVERNAME"更改为代理服务器名称,然后将其保存在开始菜单的启动文件夹中,文件扩展名为'.vbs'。
脚本中的所有注释应该能够让了解正在发生的事情。
Const HKEY_CURRENT_USER = &H80000001
Const OK_BUTTON = 0
Const AUTO_DISMISS = 0
On Error Resume Next
strComputer = "."
strServer = "SERVERNAME" ' 更改为代理服务器名称
Set objShell = CreateObject("Wscript.shell")
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
strValueName = "ProxyEnable"
objRegistry.GetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_PingStatus Where Address = '" & strServer & "'")
blnReply = reachable(strServer)
If blnReply And dwValue = 0 Then
dwValue = 1
objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
objShell.Popup "Proxy server found." & vbCrLf & "Settings have been updated automatically.", AUTO_DISMISS, "Internet Proxy Manager", OK_BUTTON
ElseIf Not blnReply And dwValue = 1 Then
dwValue = 0
objRegistry.SetDWORDValue HKEY_CURRENT_USER, strKeyPath, strValueName, dwValue
objShell.Popup "Proxy server not found." & vbCrLf & "Settings have been updated automatically.", AUTO_DISMISS, "Internet Proxy Manager", OK_BUTTON
End If
Set objFSO = CreateObject("Scripting.FileSystemObject")
Do Until objFSO.FileExists(Wscript.ScriptFullName)
WScript.Echo("The script " & Wscript.ScriptFullName & " Does Not Exist!")
Wscript.Sleep 10000
Loop
Wscript.Sleep 60000 ' 等待60秒
objShell.Run Wscript.ScriptFullName
Function reachable(HostName)
Dim wshShell, fso, tfolder, tname, TempFile, results, retString, ts
Const ForReading = 1, TemporaryFolder = 2
reachable = false
Set wshShell = CreateObject("Wscript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")
Set tfolder = fso.GetSpecialFolder(TemporaryFolder)
tname = fso.GetTempName
TempFile = tfolder & tname
wshShell.Run "cmd /c ping -n 3 -w 1000 " & HostName & " > " & TempFile, 0, True
Set results = fso.GetFile(TempFile)
Set ts = results.OpenAsTextStream(ForReading)
Do While Not ts.AtEndOfStream
retString = ts.ReadLine
If InStr(retString, "Reply") > 0 Then
reachable = True
Exit Do
End If
Loop
ts.Close
results.Delete
End Function