DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 226473 - Ultima modifica: martedì 10 aprile 2007 - Revisione: 4.0

 

Sommario

È stato spiegato le necessarie operazioni per eseguire query a livello di programmazione e di impostare le informazioni di impostazione del proxy per Internet Explorer.

In Internet Explorer 4.x e versioni precedenti, l'API di InternetQueryOption e InternetSetOption vengono utilizzati con il flag INTERNET_OPTION_PROXY. Mentre questa opzione continuerà a funzionare in Internet Explorer 5, più opzioni di connessione sono stati introdotti nella nuova versione. Detto questo, il flag INTERNET_OPTION_PROXY restituirà solo il server proxy "static" impostazione. L'opzione statico è quelle del server proxy memorizzate nell'hive HKEY_CURRENT_USER allo stesso modo è stato in Internet Explorer 4.0

Nota INTERNET_OPTION_PROXY non modifica in modo permanente le impostazioni. A tale scopo per il processo corrente solo quando viene utilizzato un handle NULL. Tuttavia, inoltre possibile modificare le impostazioni di base per sessione se viene inviato un handle di sessione valido in (sessione gli handle vengono ottenuti utilizzando l'API InternetOpen()).

Se in Internet Explorer 5, come il valore predefinito è stata specificata un'opzione di connessione diverso (ad esempio una connessione remota), è possibile che le informazioni proxy che si ottiene utilizzando il INTERNET_OPTION_PROXY flag possibile non corretto per la sessione corrente di Internet Explorer. Per questo motivo, in Internet Explorer 5, è consigliabile che il INTERNET_OPTION_PER_CONNECTION_OPTION essere utilizzate.

Nota INTERNET_OPTION_PER_CONNECTION_OPTION, le impostazioni da modificare a livello di sistema quando viene utilizzato un handle NULL. Per riflettere correttamente le impostazioni del proxy globale, è necessario chiamare la funzione InternetSetOption con il flag di opzione INTERNET_OPTION_REFRESH. Oppure per impostare le impostazioni di base per sessione, può essere utilizzato un handle di sessione valido.

Nota È comunque possibile modificare le informazioni proxy per il processo di whgke senza modificare le impostazioni di globale del computer in Internet Explorer 5 e versioni successive. Per effettuare questa operazione, è necessario chiamare la funzione InternetSetOption sull'handle viene restituito dalla funzione InternetOpen utilizzando l'opzione INTERNET_OPTION_PER_CONNECTION_OPTION. Nell'esempio di codice seguente viene modificato il proxy per l'intero processo, anche se l'handle hInternet viene chiuso e non viene utilizzato per la richiesta effettiva.
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

Informazioni

In Internet Explorer 4.x, un meccanismo tipico per le informazioni sul proxy di eseguire query sarebbe simile questo:
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());
				
In Internet Explorer 5, è consigliabile utilizzare codice simile al seguente:
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);
				
il codice sopra riportato specifica la connessione, impostando la stringa pszConnection nella struttura INTERNET_PER_CONN_OPTION_LIST. Impostando questa stringa su NULL, verranno recuperate le informazioni di configurazione per l'impostazione predefinita (o LAN) le impostazioni.

La prima opzione (opzione INTERNET_PER_CONN_AUTOCONFIG_URL [0]) restituirà l'URL specificato per la configurazione automatica del server proxy. La seconda opzione (opzione INTERNET_PER_CONN_AUTODISCOVERY_FLAG [1]) rileverà se automatica rilevare l'opzione è attivata o non per la connessione specificata. La terza opzione determinerà la combinazione di flag impostati per questa particolare connessione. Le ultime due opzioni corrispondono alle stesse informazioni come whe recuperato INTERNET_OPTION_PROXY utilizzato in Internet Explorer 4.x.

Come si inoltre vedere, le opzioni che potenzialmente possono restituire i valori di stringa vengono liberate utilizzando GlobalFree(). Infatti, il buffer di stringa sono stati allocati per l'utente dalla libreria di WININET e spetta al programmatore di liberare il buffer dopo averlo utilizzato.

Per ottenere informazioni per una connessione diversa, semplicemente modificare la stringa List.pszConnection da scegliere la voce di impostazione di accesso remoto si è interessati.

Analogamente, per impostare le informazioni sul proxy, utilizzare la stessa tecnica ma con InternetSetOption(), invece, ad esempio:
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());

				
volta nuovamente l'esempio precedente verrà modificare il predefinito (o la LAN) le impostazioni (List.pszConnection == NULL). Nell'esempio, le informazioni del server "static" proxy viene modificate in "http://myproxy" alla porta 8080. Allo stesso modo è inoltre possibile modificare l'URL di configurazione automatica:
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());
				
quando si configura Internet Explorer all'utilizzo di un server proxy per HTTP e passare diretto per altri protocolli, utilizzare il codice da seguire.

Nota Il buffer passato a INTERNET_PER_CONN_PROXY_SERVER presenta le impostazioni per ogni protocollo (questo codice imposta solo HTTP e connessione diretta a utilizzare tutti gli altri protocolli).

Nota Il INTERNET_PER_CONN_FLAGS imposta il valore per entrambi i tipi proxy (direttamente e mediante proxy) in un elemento di array di elenco di opzioni, come indicato nel codice riportato di seguito.

Nota È necessario o questi flag un'unica posizione. Se si inseriscono questi flag in un altro elemento di elenco, verranno visualizzati correttamente (opzioni di Internet Explorer,) ma solo uno dei flag (il primo è impostato) è valido.
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; 

}
				
nell'esempio sopra indicati (nuovamente il valore predefinito o impostazione LAN), è necessario specificare l'URL di configurazione del proxy automatico e impostare il flag di opzione per attivare la configurazione di proxy automatico.

Riferimenti

Documentazione di MSDN WinInet API, aprile 1999

Le informazioni in questo articolo si applicano a:
  • 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)
Chiavi: 
kbmt kbhowto KB226473 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 226473  (http://support.microsoft.com/kb/226473/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Articolo KB ritiratoDichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store