DetailPage-MSS-KB

기술 자료

기술 자료: 226473 - 마지막 검토: 2007년 4월 10일 화요일 - 수정: 4.0

 

요약

이 문서에서는 쿼리 및 프로그래밍 방식으로 Internet Explorer의 프록시 설정을 정보를 설정할 때 단계를 필요한을 설명합니다.

Internet Explorer 4.x에서 및 이전 버전에서는 InternetSetOption 및 InternetQueryOption API INTERNET_OPTION_PROXY 플래그로 사용됩니다. 이 옵션은 Internet Explorer 5에서 작동합니다 동안 연결 옵션은 여러 개 있는 새 버전은 소개되어 있습니다. 따라서 INTERNET_OPTION_PROXY 플래그를 설정하면 "정적" 프록시 서버만을 반환합니다. Internet Explorer 4.0에서 있었던 것과 같은 방법으로 훨씬 HKEY_CURRENT_USER 하이브 아래에 저장된 프록시 서버 정보를 정적 옵션입니다.

참고 INTERNET_OPTION_PROXY 설정을 영구적으로 변경하지 않습니다. NULL 핸들이 사용될 때 이 현재 프로세스에 대해 수행됩니다. 하지만 (InternetOpen() API를 사용하여 핸들을 얻은 세션) 유효한 세션 핸들에 보내지면 이를 세션 당 단위로 설정을 변경할 수도 있습니다.

Internet Explorer 5에서 전화 접속 연결) 과 같은 다른 연결 옵션을 기본값으로 지정한 경우 이를 가능한 경우 INTERNET_OPTION_PROXY 사용하여 가져올 프록시 정보의 플래그를 현재 Internet Explorer 세션에 대해 올바르지 않습니다. 이러한 이유로 Internet Explorer 5에서 해당 INTERNET_OPTION_PER_CONNECTION_OPTION 대신 사용하는 것이 좋습니다.

참고 NULL 핸들이 사용될 때 시스템 전체 단위로 변경할 수 설정을 INTERNET_OPTION_PER_CONNECTION_OPTION이 발생합니다. 전역 프록시 설정을 정확하게 반영하도록 INTERNET_OPTION_REFRESH 옵션이 플래그로 InternetSetOption 함수를 호출해야 합니다. 또는 세션 당 기준으로 설정을 설정하려면 유효한 세션 핸들을 사용할 수 있습니다.

참고 Internet Explorer 5 이상에서 전역 컴퓨터 설정에 영향을 주지 않고 whgke 프로세스에 대한 프록시 정보를 변경할 수는 있습니다. 이렇게 하려면 INTERNET_OPTION_PER_CONNECTION_OPTION 옵션을 사용하여 InternetOpen 함수에서 반환된 핸들에 InternetSetOption 함수를 호출해야 합니다. 다음 코드 예제에서는 hInternet 핸들을 닫혀 있고 실제 요청에 사용되는 경우에도 전체 프로세스는 프록시를 변경합니다.
HINTERNET hInternet = InternetOpen(szAppName, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, ...);
InternetCloseHandle (hInternet);

추가 정보

Internet Explorer 4.x에서 프록시 정보를 쿼리할 수 있는 일반적인 메커니즘을 다음과 같습니다.
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());
				
Internet Explorer 5에서 권장된 방법은 아래와 유사한 코드를 사용하는 것입니다:
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);
				
INTERNET_PER_CONN_OPTION_LIST 구조를 pszConnection 문자열을 설정하여 위의 코드는 연결을 지정합니다. 이 문자열은 NULL로 설정하여 구성 정보, 기본 (또는 LAN) 검색됩니다 설정.

첫 번째 옵션 ([0] INTERNET_PER_CONN_AUTOCONFIG_URL 옵션) 프록시 서버의 자동 구성에 대해 지정된 URL을 반환합니다. 두 번째 옵션은 [1] INTERNET_PER_CONN_AUTODISCOVERY_FLAG (옵션) 옵션이 설정되어 있는 자동 검색 여부를 또는 지정된 연결을 감지합니다. 세 번째 옵션은 이 특정 연결에 대해 설정된 플래그 조합을 결정합니다. 마지막 두 개의 옵션은 검색된 whe INTERNET_OPTION_PROXY Internet Explorer 4.x 사용한 것과 동일한 정보를 해당합니다.

또한 볼 수 있듯이 잠재적으로 문자열 값을 반환할 수 있는 옵션은 사용하여 GlobalFree()가 해제됩니다. 문자열 버퍼에 대한 WININET 라이브러리에 의해 할당된 프로그래머가 사용한 후에 해당 버퍼를 해제하려고 할 기능 때문입니다.

다른 연결 정보를 얻기 위해 사용자가 전화 접속 설정 항목이 가리키도록 List.pszConnection 문자열을 중인 단순히 변경 이를 관심이.

마찬가지로 프록시 정보를 설정하려면 같은 기술을 사용할 수 있지만 InternetSetOption() 대신, 예를 들어:
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());

				
위의 샘플 기본 또는 LAN 변경할 한 번 다시 설정 (List.pszConnection NULL ==). 다음 샘플에서는 "정적" 프록시 서버 정보는 "http://myproxy" 포트 8080이 변경됩니다. 마찬가지로 자동 구성 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());
				
에 대한 HTTP 프록시 서버 사용 및 다른 프로토콜에 대한 직접 이동하여 Internet Explorer가 구성할 때 코드를 사용하여 수행합니다.

참고 INTERNET_PER_CONN_PROXY_SERVER로 전달된 버퍼 (이 코드를 유일한 HTTP 및 다른 모든 프로토콜 사용하여 직접 연결을 설정합니다.) 각 프로토콜에 대한 설정이 있습니다.

참고 해당 INTERNET_PER_CONN_FLAGS 값을 두 프록시 유형 (직접 및 프록시를 통해) 옵션 목록 배열 요소에서 코드에서 다음과 같이 설정합니다.

참고 사용자가 하는 OR로 이러한 플래그를 한 곳에서. 이러한 플래그는 다른 목록 요소를 배치하면 올바르게 표시됩니다 (Internet Explorer OPTIONS) 플래그가 설정된 첫 중 하나가 작동하지 것입니다.
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; 

}
				
프록시 자동 구성 URL을 지정하고 자동 프록시 구성 사용 옵션을 플래그를 설정할 수 있는 기본 다시 또는 LAN 설정을 위의 예제에서.

참조

MSDN WinInet API 설명서, 1999년 4월

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Internet Explorer 4.0 128-Bit Edition
  • Microsoft Internet Explorer 4.01 서비스 팩 2
  • Microsoft Internet Explorer 4.01 서비스 팩 1
  • Microsoft Internet Explorer 5.0
  • Microsoft Windows Internet Services (WinInet)
키워드: 
kbmt kbhowto KB226473 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
폐기된 기술 자료 문서더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store