Wie Sie programmgesteuert Abfragen und legen Sie die Proxyeinstellungen unter Internet Explorer

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 226473 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Zusammenfassung

Der Artikel beschreibt die notwendigen Schritte programmgesteuert Abfragen und festlegen den Einstellung Proxyinformationen für Internet Explorer.

Unter Internet Explorer 4.x und früheren Versionen werden die InternetSetOption und InternetQueryOption APIs mit dem INTERNET_OPTION_PROXY-Flag verwendet. Während diese Option weiterhin unter Internet Explorer 5 arbeiten wird, wurden mehrere Verbindungsoptionen in der neuen Version eingeführt. Diese wird, das INTERNET_OPTION_PROXY-Flag nur den "statische" Proxyserver festlegen zurück. Die statische Option ist die Proxyserverinformationen fast dieselbe Weise unter Internet Explorer 4.0 wurde unter dem HKEY_CURRENT_USER-Hive gespeichert

Hinweis: INTERNET_OPTION_PROXY werden die Einstellungen nicht dauerhaft geändert. Dies wird für den aktuellen Prozess nur, wenn ein NULL-Handle verwendet wird. Es kann jedoch auch die Einstellungen auf einer Basis pro Sitzung ändern, wenn ein Handle gültige Sitzung (Sitzung) gesendet wird behandelt, die mit der InternetOpen()-API abgerufen werden.

Wenn unter Internet Explorer 5 als Standard das eine andere Verbindung-Option (z. B. eine DFÜ-Verbindung) angegeben, kann es möglich, dass die Proxyinformationen, die Sie erhalten unter Verwendung der INTERNET_OPTION_PROXY, flag für die aktuelle Internet Explorer-Sitzung falsch sein. Aus diesem Grund unter Internet Explorer 5 wird empfohlen, dass die INTERNET_OPTION_PER_CONNECTION_OPTION stattdessen verwendet werden.

Hinweis: INTERNET_OPTION_PER_CONNECTION_OPTION bewirkt, dass die Einstellungen auf Basis eines systemweiten geändert werden, wenn ein NULL-Handle verwendet wird. Globale Proxyeinstellungen korrekt widerspiegeln, müssen Sie die Funktion InternetSetOption mit dem INTERNET_OPTION_REFRESH-Option-Flag aufrufen. Oder die Einstellungen auf einer Basis pro Sitzung festlegen möchten, kann eine gültige Sitzungshandle verwendet werden.

Hinweis: Es ist weiterhin möglich, Proxy-Informationen für den Prozess Whgke ohne Auswirkungen auf globale Computereinstellungen in Internet Explorer 5 und höheren Versionen ändern. Zu diesem Zweck müssen Sie die Funktion InternetSetOption auf den Ziehpunkt aufrufen, die von der InternetOpen -Funktion zurückgegeben wird, mithilfe der INTERNET_OPTION_PER_CONNECTION_OPTION-Option. Im folgenden Codebeispiel wird den Proxy für den gesamten Prozess, obwohl das hInternet -Handle geschlossen wird und nicht für die aktuelle Anforderung verwendet. hInternet
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

Weitere Informationen

Unter Internet Explorer 4.x würde ein typischer Mechanismus für die Proxyinformationen Abfragen etwa folgendermaßen aussehen:
unsigned long        nSize = 4096;
char                 szBuf[4096] = { 0 };
INTERNET_PROXY_INFO* pInfo = (INTERNET_PROXY_INFO*)szBuf;

if(!InternetQueryOption(NULL, INTERNET_OPTION_PROXY, pInfo, &nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
				
Unter Internet Explorer 5 wird empfohlen, Code ähnlich dem unten verwenden:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[5];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[1].dwOption = INTERNET_PER_CONN_AUTODISCOVERY_FLAGS;
Option[2].dwOption = INTERNET_PER_CONN_FLAGS;
Option[3].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
Option[4].dwOption = INTERNET_PER_CONN_PROXY_SERVER;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 5;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetQueryOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, &nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
   if(Option[0].Value.pszValue != NULL)
   printf("%s\n", Option[0].Value.pszValue);

if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_PROXY_URL) == PROXY_TYPE_AUTO_PROXY_URL)
  printf("PROXY_TYPE_AUTO_PROXY_URL\n");

if((Option[2].Value.dwValue & PROXY_TYPE_AUTO_DETECT) == PROXY_TYPE_AUTO_DETECT)
   printf("PROXY_TYPE_AUTO_DETECT\n");

INTERNET_VERSION_INFO      Version;
nSize = sizeof(INTERNET_VERSION_INFO);

InternetQueryOption(NULL, INTERNET_OPTION_VERSION, &Version, &nSize);

if(Option[0].Value.pszValue != NULL)
   GlobalFree(Option[0].Value.pszValue);

if(Option[3].Value.pszValue != NULL)
   GlobalFree(Option[3].Value.pszValue);

if(Option[4].Value.pszValue != NULL)
   GlobalFree(Option[4].Value.pszValue);
				
der obige Code gibt die Verbindung durch Festlegen der PszConnection-Zeichenfolge in der Struktur INTERNET_PER_CONN_OPTION_LIST. Diese Zeichenfolge auf NULL festlegen, die Konfigurationsinformationen für den Standardwert (oder LAN) abgerufen Einstellungen.

Die erste Option (Option [0] INTERNET_PER_CONN_AUTOCONFIG_URL) für automatische Konfiguration des Proxyservers angegebenen URL wird zurückgegeben. Die zweite Option (Option [1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG) erkennt, ob die automatische Erkennen Option aktiviert ist oder nicht für die angegebene Verbindung. Die dritte Option bestimmt, welche Kombination von Flags für diese bestimmten Verbindung festgelegt wurden. Die letzten beiden Optionen entsprechen die gleichen Informationen wie abgerufenen Whe INTERNET_OPTION_PROXY in Internet Explorer 4.x verwendet wurde.

Wie Sie auch sehen, sind die Optionen, die potenziell Zeichenfolgenwerte zurückgeben kann mithilfe von GlobalFree() freigegeben. Ist die Zeichenfolge Puffer werden für Sie von WININET-Bibliothek zugeordnet, und es liegt für den Programmierer den Puffer frei, nachdem Sie es mit.

Um Informationen für eine andere Verbindung zu erhalten, möchte einfach ändern, sind die List.pszConnection Zeichenfolge, die den DFÜ-Einstellung Eintrag zeigen Sie, es.

Ebenso Proxyinformationen festlegen möchten, würden Sie das gleiche Verfahren verwenden, aber mit InternetSetOption() stattdessen z. B.:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[1];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
Option[0].Value.pszValue = "http://myproxy:8080";

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 1;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());

				
im obige Beispiel wird einmal erneut, ändern Sie den Standard (oder LAN) Einstellungen (List.pszConnection == NULL). In diesem Beispiel wird "statische" Proxyserverinformationen in "http://myproxy" an Anschluss 8080 geändert. Sie können entsprechend auch den URL für automatische Konfiguration ändern:
INTERNET_PER_CONN_OPTION_LIST    List;
INTERNET_PER_CONN_OPTION         Option[2];
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);

Option[0].dwOption = INTERNET_PER_CONN_AUTOCONFIG_URL;
Option[0].Value.pszValue = "http://myserver/get_proxy_info.dll";
Option[1].dwOption = INTERNET_PER_CONN_FLAGS;
Option[1].Value.dwValue = PROXY_TYPE_AUTO_PROXY_URL;

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST);
List.pszConnection = NULL;
List.dwOptionCount = 2;
List.dwOptionError = 0;
List.pOptions = Option;

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize))
   printf("InternetQueryOption failed! (%d)\n", GetLastError());
				
bei Internet Explorer so einen Proxy-Server für HTTP und wechseln Sie direkt für andere Protokolle konfigurieren, führen Sie mithilfe des Codes.

Hinweis: Der Puffer, der an INTERNET_PER_CONN_PROXY_SERVER übergeben wird hat die Einstellungen für jedes Protokoll (dieser Code setzt nur HTTP und alle anderen Protokolle verwenden direkte Verbindung).

Hinweis: Legt die INTERNET_PER_CONN_FLAGS den Wert für beide Typen Proxy (direkte und über Proxy) in fest ein Element eines Arrays Liste Option wie folgt im Code.

Hinweis: Sie oder diese flags in einer zentralen Stelle. Wenn Sie diese Flags in einer anderen Liste Element platzieren, Sie zeigt korrekt (Internet Explorer OPTIONS), aber nur eines der Flags (zuerst, die festgelegt ist) funktioniert.
int main(int argc, char * argv[]) 
{ 
char buff[256] = "http=http://<ProxyServerName>:80"; 
// To include server for FTP, HTTPS, and so on, use the string
// (ftp=http://<ProxyServerName>:80; https=https://<ProxyServerName>:80) 
INTERNET_PER_CONN_OPTION_LIST    List; 
INTERNET_PER_CONN_OPTION         Option[3]; 
unsigned long                    nSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); 

Option[0].dwOption = INTERNET_PER_CONN_PROXY_SERVER; 
Option[0].Value.pszValue = buff; 

Option[1].dwOption = INTERNET_PER_CONN_FLAGS; 
Option[1].Value.dwValue = PROXY_TYPE_PROXY; 
Option[1].Value.dwValue |= PROXY_TYPE_DIRECT; 
// This option sets all the possible connection types for the client. 
// This case specifies that the proxy can be used or direct connection is possible.

Option[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS; 
Option[2].Value.pszValue = "<local>"; 

 

List.dwSize = sizeof(INTERNET_PER_CONN_OPTION_LIST); 
List.pszConnection = NULL; 
List.dwOptionCount = 3; 
List.dwOptionError = 0; 
List.pOptions = Option; 

if(!InternetSetOption(NULL, INTERNET_OPTION_PER_CONNECTION_OPTION, &List, nSize)) 
printf("InternetSetOption failed! (%d)\n", GetLastError()); 

InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL,NULL); 
//The connection settings for other instances of Internet Explorer. 

return 0; 

}
				
in das Beispiel oben (wieder den Standardwert oder LAN-Einstellung), müssen Sie geben die Auto-Proxy Konfigurations-URL und legen Sie die Option Fahne, um die automatische Proxykonfiguration zu aktivieren.

Informationsquellen

MSDN-WinInet-API-Dokumentation, April 1999

Eigenschaften

Artikel-ID: 226473 - Geändert am: Dienstag, 10. April 2007 - Version: 4.0
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 Service Pack 2
  • Microsoft Internet Explorer 4.01 Service Pack 1
  • Microsoft Internet Explorer 5.0
  • Microsoft Windows Internet Services (WinInet)
Keywords: 
kbmt kbhowto KB226473 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 226473
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.
Disclaimer zu nicht mehr gepflegten KB-Inhalten
Dieser Artikel wurde für Produkte verfasst, für die Microsoft keinen Support mehr anbietet. Der Artikel wird deshalb in der vorliegenden Form bereitgestellt und nicht mehr weiter aktualisiert.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com