[NETWORKS]

윈도우 프로그램에서 프록시 사용

Julyus 2013. 6. 3. 10:54


http://batt22.tistory.com/14
http://it.hunhan.kr/313


Reg파일 적용 후 - 인터넷옵션 - 연결 - LAN설정 - (Unchecked확인) - 확인 하면 적용이 됩니다.



1. WinInet을 사용하는 경우
    InternetOpen에서 설정한다.
    OS(즉, Internet Explorer)에 설정된 프록시 설정을 그대로 사용할 수 있고.
    프로그램에서 독자적으로 프록시 설정을 할 수도 있다.

2. WinHTTP를 사용하는 경우
    SetProxy 메소드를 통해서 프록시 설정을 할 수 있다.
    WinInet과 마찬가지로 시스템 설정, 사용자 설정 둘 다 가능하다.

3. Internet Explorer 컨트롤을 사용하는 경우
    Proxy 설정을 별도로 하는 메소드나 방법을 찾지 못했다.
    시스템 설정만을 따르는 것 같다.

※ 시스템의 프록시 설정을 변경하는 방법
    1. Internet Explorer의 옵션에서 변경
    2. 레지스트리의 키를 수정 직접 수정
       Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer
       Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable
       실행 중인 어플리케이션에 적용하기 위해선 아래 함수 콜이 필요하다.
       InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
       InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, 0);
    3. WMI의 SetProxySetting API를 이용
       아마 레지스트리의 키를 직접 변경하는 것과 다를 바가 없을 듯

결론
Internet Explorer ActiveX를 사용하는 어플리케이션은
동시에 여러 어플리케이션을 실행하면서
각각 다른 프록시 설정을 하는 것이 어렵다.
다른 편법을 동원해야 할 듯 하다.

ps. 특정 어플리케이션에 강제로 프록시 세팅을 해주는 유틸리티를 본 것 같다.
     하지만 지금은 찾을 수도, 어떻게 동작하는 지도 모르겠다.
     프록시 서버 리스트, 자동으로 구성 같은 내용도 알아봐야 한다.


프록시 설정 자세히


[ 레지스트리 경로 ]
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

[ 프록시 서버 사용(X) ]
    종류 : REG_DWORD
    ProxyEnable => 0x00000000(0) => 사용안할때
    ProxyEnable => 0x00000001(1) => 사용할때

[ 로컬 주소에 프록시 서버 사용 안함(B) ]
    종류 : REG_SZ
    ProxyOverride => <local> => 체크시 레지스트리에 생성됨
    비체크시에는 레지스트리에서 이름과 값이없어짐.
    
[ 프록시 서버명과 포트번호 ]
    종류 : REG_SZ
    ProxyServer => http=localhost:8000

인터넷 옵션에서 고급탭 설정 방법.
[ HTTP 1.1 설정 ]
         종류 : REG_DWORD
    프록시 연결을 통해 HTTP 1.1 사용
    ProxyHttp1.1 => 0x00000001(1) => 사용할때
    ProxyHttp1.1 => 0x00000000(0) => 사용안할때

    HTTP 1.1 사용
    EnableHttp1_1 => 0x00000001(1) => 사용할때
    EnableHttp1_1 => 0x00000000(0) => 사용안할때

출처 : 데비피아 C++ Q&A