手動のプロキシ文字列が空でも、自動プロキシ検出は有効になっている場合があります。WinHttpGetIEProxyConfigForCurrentUser() が返すのは構成フィールドであり、各宛先の最終エンドポイントではありません。

フィールド意味
手動プロキシ明示的に構成された値
自動構成 URLPAC スクリプトの場所
自動検出フラグ検出が有効かどうか

この構造体は出力です。関数を呼び出す前に自動検出メンバーを設定しても、Windows の検出は有効になりません。返されたフィールドを使って、文書化されたフラグを指定した別個の自動プロキシ要求を構築してください。

まず解決し、次に適用する

WinHttpGetProxyForUrl() などの API は、実際の宛先 URL を評価します。PAC ダウンロード URL ではなくその URL を指定し、解決結果を該当する WinHTTP 要求に適用します。

直接の結果は有効です。スクリプトのダウンロード、スクリプトの評価、プロキシ接続のエラーはそれぞれ別の段階で発生します。失敗コードを確認し、返された文字列の所有権規則に従ってください。

誰の構成か

「CurrentUser」は呼び出し元のコンテキストを意味します。適切な偽装を行わないサービスは、デスクトップ ユーザーではなく自身のサービス アカウントの設定を読み取る可能性があります。

サービスが管理された設定を使うのか、承認されたユーザーの構成に従うのかを意図的に選択してください。対話型ユーザーが存在しない場合の動作も含みます。トークンの処理とリソースのクリーンアップは、サポートされている ID API に従う必要があります。

診断では、呼び出し元アカウント、構成フィールド、宛先、解決結果、最初の接続エラーをまとめて保持してください。これにより、どの段階で空の値や失敗したルートが生じたかが分かります。

関連記事