及川です。
ゴールデンウィークがあった関係で、少し間が空いてしまいました。
今日は WinHTTP について解説したいと思います(元ネタは本社の Windows Network Developer Platform チームのブログです)。
WinHTTP とは
Windows アプリケーションから HTTP を扱う方法はいくつかあります。古くは WinINET というコンポーネントがありました。正確には、古くというべきではないですね。今でも、マイクロソフトの製品の多くが、これを使っています。WinINET は HTTP だけでなく、FTP などほかのインターネットで用いられるプロトコルをプログラマブルに扱うためのコンポーネントとして利用されてきました。
WinHTTP はその WinINET を補完する形で開発されました。WinINET が元来クライアントアプリケーションを対象として設計されていたのに対して、WinHTTP はサーバーの中からの動作やサービスとしての動作もサポートします。当初はこのように WinINET はクライアント、WinHTTP はサーバーという形で使い分けされていましたが、今ではクライアントアプリケーションにおいても WinHTTP を推奨しています。
たとえば、Windows Update や Windows インストーラは(MSI)では URL で指定された場所よりモジュールをインストールすることを行いますが、その内部では WinHTTP が使われています。
WinHTTP についての詳しい解説はMSDN の情報(英語)をご覧下さい。
WinHTTP 用ユーティリティ
WinHTTP 用のユーティリティとして以下の 3 つが提供されています。
ProxyCfg.exe は Windows に同梱されています(コマンドプロンプトで "proxycfg" と叩いてみてください)が、ほかの 2 つは Windows Server 2003 Resource Kit Tools?をダウンロードする必要があります。
Windows Vista での改善
Windows Vista では、これらのユーティリティを外部から別途入手することなく使えるように、ProxyCfg.exe と WinHTTPTraceCfg.exe については Netsh に統合し、WinHTTPCertCfg.exe については MMC の証明書のスナップインに統合しています。
以上、Windows Network Developer Platform チームのブログからの情報を中心にご紹介しました。
Windows Network Developer Platform チームのブログでは、これは Part 1 ということになっていますので、Part 2 が書かれましたら、それも紹介させていただきます。