共用方式為


在 WinHTTP 中設定 WinINet Proxy 組態

在 WinHTTP 5.1 上設定自動 Proxy

從 WinINet 移植到 WinHTTP 的應用程式可能需要使用相同的自動proxy 設定,才能在 WinINet 或 Internet Explorer (IE) 下擷取它們。 WinHTTP 5.1 版 API 可以擷取和使用這些 Proxy 設定。 一般而言,WinHTTP 會在建立會話時,根據每個會話指定 Proxy 和 Proxy 略過伺服器。 您可以根據每個要求覆寫這些設定。

若要使用與 WinINet 或 IE 相同的 Proxy 組態,WinHTTP 用戶端應該設定會話的 Proxy 設定。 此外,如果 IE 或 WinINet 設定為使用 Web Proxy 自動探索 (WPAD) ,則使用這些設定的 WinHTTP 用戶端必須根據每個要求設定 Proxy 設定。 下列各節說明如何指定會話和要求的 Proxy 設定:

在會話上設定 Proxy 組態

應用程式正在使用者帳戶上執行

建立會話之前,應用程式會呼叫 WinHttpGetIEProxyConfigForCurrentUser 以取得 IE Proxy 設定。 應用程式必須以使用者帳戶的形式執行,才能取得這些設定。 pProxyConfig參數是WINHTTP_CURRENT_USER_IE_PROXY_CONFIG結構的指標,其中包含 proxy 名稱 (lpszProxy) 和 proxy 略過 (lpszProxyBypass) 伺服器。 接著會使用 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 結構的 Proxy 名稱和 Proxy 略過值來初始化 WinHTTP 會話。 藉由呼叫WinHttpOpen,並使用從WINHTTP_CURRENT_USER_IE_PROXY_CONFIG結構的lpszProxy 和 lpszProxyBypass成員取得的pwszProxyBypass 參數pwszProxyBypass參數,來初始化會話。

應用程式正在以服務的形式執行

應用程式必須在呼叫 WinHttpGetIEProxyConfigForCurrentUser之前,先將個別使用者的登錄設定載入登錄中。 如果未將這些設定載入登錄中, WinHttpGetIEProxyConfigForCurrentUser 就無法取得 Proxy 設定。 您可以呼叫 LoadUserProfile 函式,將個別使用者的登錄設定載入登錄。 如果載入使用者的登錄設定不是選項,應用程式可以使用dwAcessType參數中指定的WINHTTP_ACCESS_TYPE_DEFAULT_PROXY呼叫WinHttpOpen。 在呼叫 WinHttpOpen 時指定預設 Proxy,會指示 WinHTTP API 使用 WinHTTP proxycfg.exe 公用程式擷取 Proxy 組態集。 載入個別使用者的登錄設定之後,應用程式會遵循 [應用程式] 底下所述的步驟,在 使用者帳戶上執行 ,以設定 Proxy 名稱和 Proxy 略過伺服器。

在單一要求上設定 Proxy 組態

建立會話之前,應用程式會呼叫 WinHttpGetIEProxyConfigForCurrentUser 來判斷 WinINet 和 IE 是否設定為使用 WPAD。 WinHttpGetIEProxyConfigForCurrentUser會傳回包含fAutoDetect成員的 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG結構。 這個成員的 TRUE 值表示使用 WPAD,而 lpszAutoConfigUrl 成員包含 WPAD URL。

使用自動 Proxy 組態

如果使用 WPAD,應用程式會呼叫 WinHttpGetProxyForUrl 來擷取要求的 Proxy。 lpwszUrl參數包含要傳送要求的 URL,而 pAutoProxyOptions參數包含包含 autoproxy 選項之結構 (WINHTTP_AUTOPROXY_OPTIONS) 指標。 應用程式會使用呼叫WinHttpGetIEProxyConfigForCurrentUser中從 WINHTTP_CURRENT_USER_IE_PROXY_CONFIG 結構傳回的設定,初始化WINHTTP_AUTOPROXY_OPTIONS結構。 WINHTTP_AUTOPROXY_CONFIG_URL旗標是在WINHTTP_AUTOPROXY_OPTIONS結構的dwFlags成員中指定,而lpszAutoconfigUrl成員包含WINHTTP_CURRENT_USER_IE_PROXY_CONFIG結構的 Proxy 自動設定 URL。 WinHttpGetProxyForUrl函式會傳回WINHTTP_PROXY_INFO結構的lpszProxylpszProxyBypass成員中的 Proxy 名稱和 Proxy 略過清單。

WinHttpGetProxyForUrl取得要求的 Proxy 之後,應用程式會使用 WinHttpOpenRequest建立要求。 然後呼叫 WinHttpSetOption ,藉由在 hInternet 參數中指定要求控制碼來設定要求的 Proxy。 呼叫WinHttpSetOption中的dwOption參數應該設定為WINHTTP_OPTION_PROXY,而lpBuffer參數是包含要用於要求之 Proxy 和 Proxy 略過之WINHTTP_PROXY_INFO結構的指標。

未使用自動 Proxy 組態

如果 呼叫 WinHttpGetIEProxyConfigForCurrentUser 指出未使用 autoproxy,則應用程式可以直接使用 WinHttpOpenRequest建立要求。 整個會話的 Proxy 組態都相同,不需要每個要求變更。