Làm th? nào đ? l?p tr?nh truy v?n và đ?t thi?t đ?t ?y quy?n dư?i Internet Explorer

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 226473 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

TÓM T?T

Bài vi?t gi?i thích bư?c c?n thi?t đ? l?p tr?nh truy v?n và thi?t l?p các proxy thi?t đ?t thông tin cho Internet Explorer.

Theo Internet Explorer 4.x và trư?c đó, InternetSetOption và InternetQueryOption các API đư?c s? d?ng v?i c? INTERNET_OPTION_PROXY. Trong khi tùy ch?n này s? v?n làm vi?c dư?i Internet Explorer 5, nhi?u tùy ch?n k?t n?i đ? đư?c gi?i thi?u trong phiên b?n m?i. Đư?c đi?u này, c? INTERNET_OPTION_PROXY s? tr? l?i ch? là máy ch? proxy "t?nh" thi?t l?p. Các tùy ch?n t?nh là thông tin máy ch? ?y quy?n đư?c lưu dư?i HKEY_CURRENT_USER hive nhi?u theo cùng m?t cách nó đ? theo Internet Explorer 4.0

Chú ý INTERNET_OPTION_PROXY không v?nh vi?n thay đ?i các thi?t đ?t. Nó th?c hi?n đi?u này cho quá tr?nh hi?n t?i ch? khi m?t x? l? NULL đư?c s? d?ng. Tuy nhiên, nó c?ng có th? thay đ?i các thi?t l?p trên m?t cơ s? cho m?i phiên làm vi?c n?u m?t x? l? h?p l? phiên đư?c g?i trong (phiên x? l? đư?c thu đư?c b?ng cách s? d?ng InternetOpen() API).

N?u theo Internet Explorer 5, b?n ch? đ?nh m?t tùy ch?n k?t n?i khác nhau (ch?ng h?n như m?t quay s? k?t n?i) theo m?c đ?nh, có th? thông tin ?y quy?n b?n có đư?c b?ng cách s? d?ng INTERNET_OPTION_PROXY c? có th? không chính xác cho Internet Explorer phiên hi?n th?i. V? l? do này, dư?i Internet Explorer 5, khuyên r?ng INTERNET_OPTION_PER_CONNECTION_OPTION đư?c s? d?ng đ? thay th?.

Chú ý INTERNET_OPTION_PER_CONNECTION_OPTION gây ra các thi?t đ?t ph?i đư?c thay đ?i trên cơ s? toàn h? th?ng khi m?t x? l? NULL đư?c s? d?ng. Đ? ph?n ánh chính xác thi?t đ?t ?y quy?n toàn c?u, b?n ph?i g?i cho các InternetSetOption ch?c năng v?i INTERNET_OPTION_REFRESH tùy ch?n c?. Ho?c, đ? thi?t l?p các cài đ?t trên m?t cơ s? cho m?i phiên làm vi?c, m?t x? l? h?p l? phiên có th? đư?c s? d?ng.

Chú ý Đó là v?n c?n có th? thay đ?i thông tin ?y quy?n cho quá tr?nh whgke mà không ?nh hư?ng đ?n toàn c?u máy thi?t l?p trong Internet Explorer 5 và phiên b?n m?i nh?t. Đ? th?c hi?n vi?c này, b?n ph?i g?i cho các InternetSetOption ch?c năng ngày x? l? đư?c tr? l?i b?i các InternetOpen ch?c năng b?ng cách s? d?ng tùy ch?n INTERNET_OPTION_PER_CONNECTION_OPTION. Ví d? m? sau thay đ?i proxy cho toàn b? quá tr?nh m?c dù các hInternet x? l? đóng c?a và không đư?c s? d?ng cho yêu c?u th?c t?.
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

THÔNG TIN THÊM

Theo Internet Explorer 4.x, m?t cơ ch? tiêu bi?u đ? truy v?n thông tin proxy s? gi?ng như th? này:
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());
				
Theo Internet Explorer 5, cách đư?c đ? ngh? là s? d?ng m? tương t? như dư?i đây:
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);
				
M? ? trên ch? đ?nh k?t n?i b?ng cách thi?t l?p chu?i pszConnection trong cơ c?u INTERNET_PER_CONN_OPTION_LIST. B?ng cách đ?t chu?i này thành NULL, thông tin c?u h?nh s? đư?c l?y cho m?c đ?nh (ho?c LAN) cài đ?t.

Tùy ch?n đ?u tiên (tùy ch?n [0] INTERNET_PER_CONN_AUTOCONFIG_URL) s? tr? v? URL đư?c ch? đ?nh cho c?u h?nh t? đ?ng c?a các máy ch? proxy. Tùy ch?n th? hai (l?a ch?n [1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG) s? phát hi?n hay không t? đ?ng phát hi?n tùy ch?n đư?c kích ho?t hay không cho k?t n?i đư?c ch? ra. L?a ch?n th? ba s? xác đ?nh s? k?t h?p c?a lá c? đ? đư?c thi?t l?p cho k?t n?i này c? th?. Cu?i hai l?a ch?n tương ?ng v?i thông tin tương t? như truy c?p whe INTERNET_OPTION_PROXY đư?c s? d?ng trong Internet Explorer 4.x.

Như b?n c?ng th?y, các tùy ch?n mà có th? có ti?m năng tr? v? chu?i giá tr? đư?c gi?i phóng b?ng cách s? d?ng GlobalFree(). Đi?u này là b?i v? b? đ?m chu?i đư?c phân b? cho b?n b?i thư vi?n WinINet x? l?, và nó đ?n l?p tr?nh đ? gi?i phóng b? đ?m sau khi s? d?ng nó.

Đ? có đư?c thông tin cho m?t k?t n?i khác nhau, đơn gi?n ch? c?n thay đ?i chu?i List.pszConnection đ? tr? đ?n Dial-Up thi?t l?p m?c b?n đang quan tâm đ?n nó.

Tương t? như v?y, đ?t ?y quy?n thông tin, b?n s? s? d?ng k? thu?t tương t? nhưng v?i InternetSetOption() thay vào đó, ví d?:
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());

				
M?t l?n n?a, m?u ? trên s? thay đ?i m?c đ?nh (ho?c LAN) cài đ?t (List.pszConnection == NULL). Trong m?u, thông tin máy ch? ?y quy?n "t?nh" đư?c thay đ?i đ? "http://myproxy" t?i c?ng 8080. Tương t? như v?y b?n c?ng có th? thay đ?i t? đ?ng c?u h?nh URL:
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());
				
Khi b?n c?u h?nh Internet Explorer s? d?ng m?t máy ch? proxy cho HTTP và đi tr?c ti?p cho các giao th?c khác, s? d?ng m? đ? làm theo.

Chú ý B? đ?m đư?c thông qua đ? INTERNET_PER_CONN_PROXY_SERVER đ? thi?t l?p cho m?i giao th?c (m? này đ?t ch? HTTP, và t?t c? các giao th?c s? d?ng k?t n?i tr?c ti?p).

Chú ý INTERNET_PER_CONN_FLAGS b? giá tr? cho c? hai lo?i Proxy (tr?c ti?p và thông qua proxy) trong m?t ph?n c?a m?ng danh sách tùy ch?n, như đư?c hi?n th? dư?i đây trong các m?.

Chú ý B?n ph?i ho?c nh?ng lá c? ? m?t nơi. N?u b?n đ?t các c? trong m?t danh sách các y?u t?, h? s? hi?n th? m?t cách chính xác (tùy ch?n Internet Explorer), nhưng ch? là m?t trong nh?ng lá c? (là ngư?i đ?u tiên đư?c thi?t l?p) s? làm vi?c.
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; 

}
				
M?u ? trên (m?t l?n n?a m?c đ?nh ho?c thi?t l?p m?ng LAN), b?n ph?i ch? đ?nh URL c?u h?nh proxy t? đ?ng và đ?t c? tùy ch?n đ? cho phép c?u h?nh proxy t? đ?ng.

THAM KH?O

MSDN WinInet API tài li?u, tháng 4 năm 1999

Thu?c tính

ID c?a bài: 226473 - L?n xem xét sau cùng: 21 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Internet Explorer 4.01 Service Pack 1
T? khóa: 
kbhowto kbmt KB226473 KbMtvi
Máy d?ch
QUAN TRỌNG: Bài vi?t này đư?c d?ch b?ng ph?n m?m d?ch máy c?a Microsoft ch? không ph?i do con ngư?i d?ch. Microsoft cung c?p các bài vi?t do con ngư?i d?ch và c? các bài vi?t do máy d?ch đ? b?n có th? truy c?p vào t?t c? các bài vi?t trong Cơ s? Ki?n th?c c?a chúng tôi b?ng ngôn ng? c?a b?n. Tuy nhiên, bài vi?t do máy d?ch không ph?i lúc nào c?ng hoàn h?o. Lo?i bài vi?t này có th? ch?a các sai sót v? t? v?ng, cú pháp ho?c ng? pháp, gi?ng như m?t ngư?i nư?c ngoài có th? m?c sai sót khi nói ngôn ng? c?a b?n. Microsoft không ch?u trách nhi?m v? b?t k? s? thi?u chính xác, sai sót ho?c thi?t h?i nào do vi?c d?ch sai n?i dung ho?c do ho?t đ?ng s? d?ng c?a khách hàng gây ra. Microsoft c?ng thư?ng xuyên c?p nh?t ph?n m?m d?ch máy này.
Nh?p chu?t vào đây đ? xem b?n ti?ng Anh c?a bài vi?t này:226473
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài vi?t này nói v? các s?n ph?m mà Microsoft không c?n h? tr? n?a. Do đó, bài vi?t này đư?c cung c?p "nguyên b?n" và s? không đư?c c?p nh?t.

Cung cấp Phản hồi

 

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