2010-07-12 6 views
3

다음 코드를 사용하여 Internet Explorer 프록시를 설정했습니다.IE 프록시를 프로그래밍 방식으로 변경하려면 확인 버튼을 누르는 방법

RegistryKey RegKey = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true); 
      RegKey.SetValue("ProxyServer", "proxyserver"); 
      RegKey.SetValue("ProxyEnable", 1); 
      RegKey.SetValue("ProxyOverride", "domains;<local>", RegistryValueKind.String); 

이 코드를 실행하면 Internet Explorer의 프록시 설정에서 프록시 서버 이름을 사용할 수 있습니다. 하지만 테스트 환경에서 웹 페이지를 볼 때 나는 그것을 볼 수 없습니다. 나는이 코드를 통해 프록시를 설정 한 후 LAN 설정에서 확인 버튼을 클릭 한 다음 제대로 볼 수있는 웹 페이지를 눌러야한다는 Internet Explorer의 매우 이상한 동작을 발견했습니다.

나는 이것을 4-5 시간 동안 찾았지만 지금은 이것과 매우 혼동하고있다. 어떤 도움이라도 대단히 감사하겠습니다.

+0

아직도이 Pritam에 문제가 있습니까? – fletcher

답변

2

설정을 변경하는 데 사용해야하는 Internet Explorer 용 API가 있습니다.

WinInet은 레퍼런스 : http://msdn.microsoft.com/en-us/library/aa385483(VS.85).aspx

당신은 레지스트리를 읽고 설정을의 다시 채울 Internet Explorer를 강제로 새로 고침 플래그 InternetSetOption 함수를 호출해야 프록시 설정을 변경 한 후. 레지스트리의 값을 이미 변경 한 경우 IE 새로 고침을 위해 나중에 다음 함수 (RefreshInternetExplorerSettings)를 호출하면 문제가 해결됩니다.

[DllImport("wininet.dll", SetLastError = true, CharSet = CharSet.Auto)] 
private static extern bool InternetSetOption(
    IntPtr hInternet, 
    SET_OPTIONS option, 
    IntPtr buffer, 
    int bufferLength); 

    public enum SET_OPTIONS 
    {    
     INTERNET_OPTION_REFRESH = 37, 
     INTERNET_OPTION_SETTINGS_CHANGED = 39, 
     INTERNET_OPTION_PER_CONNECTION_OPTION = 75 
    }; 

    private static void RefreshInternetExplorerSettings() 
    { 
     InternetSetOption(IntPtr.Zero, SET_OPTIONS.INTERNET_OPTION_SETTINGS_CHANGED, IntPtr.Zero, 0); 
     InternetSetOption(IntPtr.Zero, SET_OPTIONS.INTERNET_OPTION_REFRESH, IntPtr.Zero, 0); 
    } 
관련 문제