none
VBSでレジストリを操作せずにプロキシ設定ON,OFFを変更する方法 RRS feed

  • 質問

  • VBSでレジストリを操作せずにプロキシ設定ON,OFFを変更する方法は有りますでしょうか?

    下記のページにレジストリを直接参照しなくてもプロキシ設定を参照できる内容のプログラムがありますが

    Set oService = oLocator.ConnectServer(, "Root\CIMV2\Applications\MicrosoftIE")の所で無効な名前空間とエラーが出ます。

    Windows vista以降ではRoot\CIMV2\Applications\MicrosoftIEはなくなってしまったのでしょうか?

    それとも別の名前に代わってしまったのでしょうか?

    「http://www.wmifun.net/sample/microsoftie_lansettings.html」

    ------------------------------------------------------------------------------------------------------------------------------------

    Option Explicit

    'WMIにて使用する各種オブジェクトを定義・生成する。
    Dim oClassSet
    Dim oClass
    Dim oLocator
    Dim oService
    Dim sMesStr

    'ローカルコンピュータに接続する。
    Set oLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
    Set oService = oLocator.ConnectServer(, "Root\CIMV2\Applications\MicrosoftIE")
    'クエリー条件をWQLにて指定する。
    Set oClassSet = oService.ExecQuery("Select * From MicrosoftIE_LanSettings")

    'コレクションを解析する。
    For Each oClass In oClassSet

    sMesStr = "プロキシ サーバーを使用する:" & oClass.Proxy & vbCrLf & _
    "アドレス:" & oClass.ProxyServer & vbCrLf & _
    "例外:" & oClass.ProxyOverride

    Next

    MsgBox ("Internet ExplorerのProxy設定です。" & vbCrLf & vbCrLf & sMesStr)

    '使用した各種オブジェクトを後片付けする。
    Set oClassSet = Nothing
    Set oClass = Nothing
    Set oService = Nothing
    Set oLocator = Nothing

    -----------------------------------------------------------------------------------------------------------------------------------------

    2016年2月11日 13:45

すべての返信

  • はじめまして、試してみたところ私の環境(Windows8.1とWindows10)でも
    Root\CIMV2\Applications\MicrosoftIE
    を開くことができませんでした。いつかのタイミングで開けなくなったようですね。

    レジストリを操作せずにプロキシ設定ON,OFFを変更する方法ですが、
    InternetSetOptionを使用すれば直接レジストリを触らずに変更できるようです。

    https://social.msdn.microsoft.com/Forums/ja-JP/f4dc3550-f213-41ff-a17d-95c917bed027/webbrowser-control-for-setting-proxy?forum=winforms

    のphysicforさんの投稿が参考になるかと思います。

    よろしくお願いします。


    2016年2月11日 15:24
  • ご回答いただきありがとうございます。

    申し訳ありません。

    私のスキル不足でDLLを使用した事が無い為まだどうすればVBSからInternetSetOptionを使いプロキシをON,OFF出来るのか見いだせない状態です。

    VBSからだとrundll32.exe からwininet.dll内の関数等を実行するのだと推測しておりますが、具体的にはVBSにどう記述すれば良いのかご教授いただけないでしょうか。

    2016年2月12日 9:15
  • physicforさんのサンプルの下記の部分は、VBA(Visual Basic for Applications)では使えるけどVBScriptでは使えない機能のような気がします。

    > Private Declare Function InternetSetOption _

    下記ページのVBScriptで使えないVBAの機能の一覧にDeclareが載っています。

    Visual Basic for Applications Features Not In VBScript
    https://msdn.microsoft.com/en-us/library/30593abb(v=vs.84).aspx

    > Declare (for declaring DLLs) Optional ParamArray Static

    2016年2月12日 10:37
  • 仰る通りです。

    VBScriptの場合はWin32の関数を呼び出すのが難しいですね。
    ExcellなどのCOMを利用したり、kttttttさんの仰るようにrundll32.exe
    を利用したりすれば一部は可能なようですが、今回InternetSetOption関数では
    引数に構造体のポインタなどを渡さなければならないため
    VBScriptでは難しいという結論に至りました。

    申し訳ありません。


    2016年2月13日 5:26