DetailPage-MSS-KB

Knowledge Base

Artikel ID: 226473 - Laatste beoordeling: zondag 27 februari 2011 - Wijziging: 2.0

 

Samenvatting

De stappen die nodig zijn om via een programma opvragen en instellen van de gegevens van de proxy-instellingen voor Internet Explorer beschreven.

Bij Internet Explorer 4. x en eerder worden InternetSetOption en InternetQueryOption API's gebruikt met de vlag INTERNET_OPTION_PROXY. Terwijl deze optie nog steeds onder Internet Explorer 5 werkt, hebben meerdere verbindingsopties zijn ingevoerd in de nieuwe versie. Gezien dit, retourneert de vlag INTERNET_OPTION_PROXY alleen de "statische" proxy-server instellen. De optie statische is de proxy serverinformatie opgeslagen onder de component HKEY_CURRENT_USER ongeveer op dezelfde manier was onder Internet Explorer 4. 0

OpmerkingINTERNET_OPTION_PROXY de instellingen niet blijvend gewijzigd. Dit gebeurt voor het huidige proces alleen wanneer een lege ingang wordt gebruikt. Het kan echter ook de instellingen per sessie wijzigen als een geldige sessie-ingang (sessie grepen zijn verkregen met behulp van de API InternetOpen()) wordt verzonden.

Als u Internet Explorer 5, onder een andere verbindings optie (zoals een inbelverbinding) als standaard opgegeven, het mogelijk dat de proxygegevens die u verkrijgt met behulp van de INTERNET_OPTION_PROXY vlag mogelijk onjuist voor de huidige sessie van Internet Explorer. Om deze reden onder Internet Explorer 5, verdient het aanbeveling dat de INTERNET_OPTION_PER_CONNECTION_OPTION in plaats daarvan worden gebruikt.

OpmerkingINTERNET_OPTION_PER_CONNECTION_OPTION zorgt ervoor dat de instellingen worden gewijzigd op basis van een systeem als een NULL-koppeling wordt gebruikt. Goed aan globale proxy-instellingen, moet u deInternetSetOptionfunctie met de vlag INTERNET_OPTION_REFRESH optie. Of om de instellingen op basis van per sessie een geldige sessie-ingang kan worden gebruikt.

OpmerkingHet is nog steeds mogelijk proxygegevens wijzigen voor het whgke proces zonder globale instellingen in Internet Explorer 5 en latere versies. Hiervoor moet u deInternetSetOptionfunctie op de greep die wordt geretourneerd door deInterne tOpenfunctie met behulp van de optie INTERNET_OPTION_PER_CONNECTION_OPTION. In het volgende codevoorbeeld de proxy voor het hele proces ook al verandert dehInternetingang is gesloten en wordt niet gebruikt voor het feitelijke verzoek.
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

Meer informatie

Bij Internet Explorer 4. x, zou een typische mechanisme proxygegevens query er ongeveer als volgt:
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());
				
Bij Internet Explorer 5 is de aanbevolen manier is vergelijkbaar met de onderstaande code gebruiken:
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);
				
De bovenstaande code geeft de verbinding door de teken reeks pszConnection in de INTERNET_PER_CONN_OPTION_LIST-structuur. Deze teken reeks instelt op NULL, de configuratiegegevens worden opgehaald voor de standaard (of LAN) instellingen.

De eerste optie (optie INTERNET_PER_CONN_AUTOCONFIG_URL [0]) retourneert de opgegeven URL voor automatische configuratie van de proxyserver. De tweede optie (optie [1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG) of de automatische detectie is ingeschakeld of niet voor de opgegeven verbinding wordt gedetecteerd. De derde optie bepaalt welke combinatie van vlaggen voor deze specifieke verbinding zijn ingesteld. De laatste twee opties corresponderen met dezelfde gegevens als opgehaalde whe INTERNET_OPTION_PROXY in Internet Explorer 4. x werd gebruikt.

Zoals u ook ziet, worden GlobalFree() met de opties die mogelijk in teken reeks waarden resulteren kunnen vrijgemaakt. Dit is omdat de teken reeks buffers voor u worden toegewezen door de WININET-bibliotheek en de programmeur de buffer na gebruik van het vrij is.

Gewoon wijzigen de string List.pszConnection verwijst naar de inbelvermelding met instelling u bent geïnteresseerd om informatie te verkrijgen voor een andere verbinding, deze.

Evenzo proxy instellen, gebruikt u dezelfde techniek, maar met InternetSetOption(), bijvoorbeeld:
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());

				
Nogmaals, in het bovenstaande voorbeeld verandert de standaard (of LAN) instellingen (List.pszConnection = = NULL). De "statische" proxy servergegevens in het voorbeeld wordt gewijzigd in 'http://myproxy' op poort 8080. Zo kunt u ook de URL voor automatische configuratie wijzigen:
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());
				
Wanneer u Internet Explorer configureren voor gebruik van een proxyserver voor HTTP en rechtstreeks voor andere protocollen, kunt u code gebruiken om te volgen.

OpmerkingDe buffer die wordt doorgegeven aan INTERNET_PER_CONN_PROXY_SERVER heeft de instellingen voor elk protocol (code stelt alleen HTTP en alle andere protocollen gebruikt directe verbinding).

OpmerkingHet INTERNET_PER_CONN_FLAGS stelt de waarde voor beide typen Proxy (direct en via proxy) in één element van de matrix van de optie lijst, zoals hieronder wordt weer gegeven in de code.

OpmerkingU moet of deze vlaggen in één plaats. Als u deze markeringen in een andere lijst element plaatst, worden deze weer gegeven correct (opties voor Internet Explorer), maar slechts een van de vlaggen (de eerste is ingesteld) werken.
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 het bovenstaande voorbeeld (de standaard opnieuw of LAN-instelling) moet u de automatische proxy configuration URL opgeven en instellen van de optie vlaggen voor het inschakelen van de automatische configuratie van proxy.

Referenties

MSDN WinInet-API documentatie, April 1999

De informatie in dit artikel is van toepassing op:
  • Microsoft Internet Explorer 4.01 Service Pack 1
Trefwoorden: 
kbhowto kbmt KB226473 KbMtnl
Machine-translated ArticleMachine-translated Article
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:226473  (http://support.microsoft.com/kb/226473/en-us/ )
Ingetrokken KB-artikelVrijwaring inhoud KB-artikelen over niet langer ondersteunde producten
Dit artikel heeft betrekking op producten waarvoor Microsoft geen ondersteuning meer biedt. Daarom wordt dit artikel alleen in de huidige vorm aangeboden en wordt het niet meer bijgewerkt.
Delen
Extra ondersteuningsopties
Microsoft Community Support-forums
Neem rechtstreeks contact met ons op
Een door Microsoft gecertificeerde partner zoeken
Microsoft Store