Festlegen von WinINet-Proxykonfigurationen in WinHTTP

Festlegen des automatischen Proxys für WinHTTP 5.1

Anwendungen, die von WinINet zu WinHTTP portieren, müssen möglicherweise dieselben Autoproxyeinstellungen verwenden, die sie unter WinINet oder Internet Explorer (IE) abrufen können. Die WinHTTP-API, Version 5.1, kann diese Proxyeinstellungen abrufen und verwenden. Im Allgemeinen gibt WinHTTP die Proxy- und Proxyumgehungsserver pro Sitzung an, wenn die Sitzung erstellt wird. Diese Einstellungen können auf Anforderungsbasis überschrieben werden.

Um dieselbe Proxykonfiguration wie WinINet oder IE zu verwenden, sollte der WinHTTP-Client Proxyeinstellungen für die Sitzung festlegen. Wenn IE oder WinINet für die Verwendung der automatischen Webproxyermittlung (Web Proxy Auto-Discovery, WPAD) konfiguriert sind, muss der WinHTTP-Client, der diese Einstellungen verwendet, proxyeinstellungen auf Anforderungsbasis festlegen. In den folgenden Abschnitten wird beschrieben, wie Sie die Proxyeinstellungen für eine Sitzung und eine Anforderung angeben:

Festlegen der Proxykonfiguration für eine Sitzung

Die Anwendung wird in einem Benutzerkonto ausgeführt.

Bevor eine Sitzung erstellt wird, ruft die Anwendung WinHttpGetIEProxyConfigForCurrentUser auf, um die IE-Proxyeinstellungen abzurufen. Die Anwendung muss als Benutzerkonto ausgeführt werden, um diese Einstellungen zu erhalten. Der Parameter pProxyConfig ist ein Zeiger auf eine WINHTTP_CURRENT_USER_IE_PROXY_CONFIG Struktur, die die Proxynamenserver (lpszProxy) und Proxyumgehungsserver (lpszProxyBypass) enthält. Die Proxynamen- und Proxyumgehungswerte der WINHTTP_CURRENT_USER_IE_PROXY_CONFIG-Struktur werden dann verwendet, um die WinHTTP-Sitzung zu initialisieren. Die Sitzung wird initialisiert, indem WinHttpOpen mit den Parametern pwszProxyName und pwszProxyBypass aufgerufen wird, die aus den Elementen lpszProxy und lpszProxyBypass der WINHTTP_CURRENT_USER_IE_PROXY_CONFIG-Struktur abgerufen werden.

Die Anwendung wird als Dienst ausgeführt.

Die Anwendung muss sicherstellen, dass die Registrierungseinstellungen für einen einzelnen Benutzer in die Registrierung geladen werden, bevor WinHttpGetIEProxyConfigForCurrentUser aufgerufen wird. Wenn diese Einstellungen nicht in die Registrierung geladen werden, kann WinHttpGetIEProxyConfigForCurrentUser die Proxyeinstellungen nicht abrufen. Registrierungseinstellungen für einen einzelnen Benutzer können durch Aufrufen der LoadUserProfile-Funktion in die Registrierung geladen werden. Wenn das Laden der Registrierungseinstellungen des Benutzers keine Option ist, kann die Anwendung WinHttpOpen mit der im dwAcessType-Parameter angegebenen WINHTTP_ACCESS_TYPE_DEFAULT_PROXY aufrufen. Die Angabe des Standardproxys im Aufruf von WinHttpOpen weist die WinHTTP-API an, den Proxykonfigurationssatz mithilfe des WinHTTP-proxycfg.exe-Hilfsprogramms abzurufen. Nachdem die Registrierungseinstellungen für einen einzelnen Benutzer geladen wurden, führt die Anwendung die unter Die Anwendung wird in einem Benutzerkonto ausgeführten Schritte aus, um den Proxynamen und die Proxyumgehungsserver festzulegen.

Festlegen der Proxykonfiguration für eine einzelne Anforderung

Bevor die Sitzung erstellt wird, ruft die Anwendung WinHttpGetIEProxyConfigForCurrentUser auf, um zu bestimmen, ob WinINet und IE für die Verwendung von WPAD konfiguriert sind. WinHttpGetIEProxyConfigForCurrentUser gibt die WINHTTP_CURRENT_USER_IE_PROXY_CONFIG-Struktur zurück, die den fAutoDetect-Member enthält. Der Wert TRUE für diesen Member gibt an, dass WPAD verwendet wird, und das lpszAutoConfigUrl-Element enthält die WPAD-URL.

Automatische Proxykonfiguration wird verwendet

Wenn WPAD verwendet wird, ruft die Anwendung WinHttpGetProxyForUrl auf, um den Proxy für die Anforderung abzurufen. Der Parameter lpwszUrl enthält die URL, an die die Anforderung gesendet wird, und der Parameter pAutoProxyOptions enthält einen Zeiger auf die Struktur (WINHTTP_AUTOPROXY_OPTIONS), die die Autoproxyoptionen enthält. Die Anwendung initialisiert die WINHTTP_AUTOPROXY_OPTIONS-Struktur mit den Einstellungen, die von der WINHTTP_CURRENT_USER_IE_PROXY_CONFIG-Struktur im Aufruf von WinHttpGetIEProxyConfigForCurrentUser zurückgegeben werden. Das flag WINHTTP_AUTOPROXY_CONFIG_URL wird im dwFlags-Element der WINHTTP_AUTOPROXY_OPTIONS-Struktur angegeben, und das lpszAutoconfigUrl-Element enthält die Proxy-Autokonfigurations-URL aus der WINHTTP_CURRENT_USER_IE_PROXY_CONFIG-Struktur . Die WinHttpGetProxyForUrl-Funktion gibt den Proxynamen und die Proxyumgehungsliste in den Membern lpszProxy und lpszProxyBypass der WINHTTP_PROXY_INFO-Struktur zurück.

Nachdem der Proxy für die Anforderung von WinHttpGetProxyForUrl abgerufen wurde, erstellt die Anwendung die Anforderung mit WinHttpOpenRequest. Anschließend wird WinHttpSetOption aufgerufen, um den Proxy für die Anforderung festzulegen, indem das Anforderungshandle im hInternet-Parameter angegeben wird. Der dwOption-Parameter im Aufruf von WinHttpSetOption sollte auf WINHTTP_OPTION_PROXY festgelegt werden, und der lpBuffer-Parameter ist ein Zeiger auf eine WINHTTP_PROXY_INFO Struktur, die die Proxy- und Proxyumgehung enthält, die für die Anforderung verwendet werden soll.

Die automatische Proxykonfiguration wird nicht verwendet.

Wenn der Aufruf von WinHttpGetIEProxyConfigForCurrentUser angibt, dass autoproxy nicht verwendet wird, kann die Anwendung die Anforderung einfach mit WinHttpOpenRequest erstellen. Die Proxykonfiguration ist für die gesamte Sitzung identisch, und Änderungen pro Anforderung sind nicht erforderlich.