0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBScriptでプロキシの設定を切り替える

Last updated at Posted at 2020-02-22

概要

VBScriptでプロキシの設定を切り替えます。

インターネットオプションのレジストリ(システムのプロキシ設定)を書き換えて実現します。

この方法は、たとえば、即座にブラウザに反映させたい場合には不向きです。(ブラウザの再起動が必要になる)
そのようなケースは各ブラウザの拡張機能を利用するのがよいと思います。

要点

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
でプロキシサーバを利用するにチェックを入れて

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer
にプロキシサーバのアドレスとポートを設定すればOKです。

' レジストリ
Const REGKEY_PROXY_ENABLE = "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"

Const REGKEY_PROXY_SERVER = "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer"

'プロキシサーバを利用するにチェック
objShell.RegWrite REGKEY_PROXY_ENABLE, 1, "REG_DWORD"
    
'プロキシサーバのアドレスとポートを設定
objShell.RegWrite REGKEY_PROXY_SERVER, "localhost:3128", "REG_SZ"

プロキシを解除するときは、
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
でプロキシサーバを利用するのチェックを外すだけでOKです。

ソース

プロキシ設定用の簡単な画面をつけています。

image.png

proxy.hta
<!DOCTYPE html>
<html>
<head>
    <title>Proxy</title>
</head>
<script language="vbscript">
' 画面サイズ変更
Sub Window_OnLoad
  Window.ResizeTo 240,120
End Sub
</script>

<body>
	<input type="radio" name="proxy" value="proxy1" onclick="SetProxy()">プロキシ設定<br>
	<input type="radio" name="proxy" value="proxyNone" onclick="RemoveProxy()">プロキシなし<br>
</body>

<script language="vbscript">

' レジストリ
Const REGKEY_PROXY_ENABLE = "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable"

Const REGKEY_PROXY_SERVER = "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer"

' オブジェクト
Dim objShell:Set objShell = CreateObject("WScript.Shell")

' プロキシ設定
Sub SetProxy()
  'プロキシサーバを利用するにチェック
  objShell.RegWrite REGKEY_PROXY_ENABLE, 1, "REG_DWORD"
    
  'プロキシサーバのアドレスとポートを設定
  objShell.RegWrite REGKEY_PROXY_SERVER, "localhost:3128", "REG_SZ"

  If objShell.RegRead(REGKEY_PROXY_ENABLE) = 1 Then
    server = objShell.RegRead(REGKEY_PROXY_SERVER)
    MsgBox("プロキシ設定成功:" & server)
  Else
    server = objShell.RegRead(REGKEY_PROXY_SERVER)
    MsgBox("プロキシ設定失敗:" & server)
  End If
End Sub


' プロキシ解除
Sub RemoveProxy()
  ' プロキシサーバを利用するのチェックを外す
  objShell.RegWrite REGKEY_PROXY_ENABLE, 0, "REG_DWORD"

  ' プロキシサーバのアドレスとポートに値が入っていても
  ' プロキシは解除されているので、以下はコメントアウトしておく
  ' objShell.RegWrite REGKEY_PROXY_SERVER, "", "REG_SZ"

  If objShell.RegRead(REGKEY_PROXY_ENABLE) = 0 Then
    MsgBox("プロキシ解除成功")
  Else
    MsgBox("プロキシ解除失敗")
  End If
End Sub

</script>
</html>

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?