VBScript 自动设置IE代理切换

在现代办公环境中,网络连接的稳定性和便捷性对于员工的工作效率至关重要。尤其是对于需要频繁使用互联网资源的销售人员来说,网络的可用性直接影响到他们的工作表现。本文将介绍一种使用VBScript自动设置IE代理的方法,以解决VPN断开后IE无法访问互联网的问题。

公司最近为所有销售人员更换了笔记本电脑,并为他们配置了VPN连接到公司网络。由于公司网络中使用了代理服务器,这导致一些用户在断开VPN连接后仍然希望使用IE浏览器访问互联网时遇到了问题。

多次被问及为什么用户在未连接VPN的情况下无法连接到互联网。因此,决定寻找一种方法,能够自动更新IE中的代理开关,使得VPN连接的任何变化对用户来说几乎是透明的。

寻找解决方案

花费了相当长的时间在Scripting Guy网站上寻找有用的代码片段,但没有找到包含需要的所有内容的文章,所以编写了这个脚本。

如何使用代码

只需将此代码复制到记事本中,将"SERVERNAME"更改为代理服务器名称,然后将其保存在开始菜单的启动文件夹中,文件扩展名为'.vbs'。

脚本中的所有注释应该能够让了解正在发生的事情。

VBScript代码

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
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485