ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C# WebBrowser IE버전 알맞게 변경하는 방법
    닷넷/WinForms 2022. 8. 3. 13:45
    반응형
    public Form1()
    {
        InitializeComponent();
    
        SetBrowserEmulationVersion();
    }
    
    private const string InternetExplorerRootKey = @"Software\Microsoft\Internet Explorer";
    private const string BrowserEmulationKey = InternetExplorerRootKey + @"\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
    
    public enum BrowserEmulationVersion
    {
        Default = 0,
        Version7 = 7000,
        Version8 = 8000,
        Version8Standards = 8888,
        Version9 = 9000,
        Version9Standards = 9999,
        Version10 = 10000,
        Version10Standards = 10001,
        Version11 = 11000,
        Version11Edge = 11001
    }
    
    #region 현재 설치되어있는 IE Explorer 버전 읽어오는것
    public static int GetInternetExplorerMajorVersion()
    {
        int result = 0;
        try
        {
            RegistryKey key = Registry.LocalMachine.OpenSubKey(InternetExplorerRootKey);
    
            if (key != null)
            {
                object value;
                value = key.GetValue("svcVersion", null) ?? key.GetValue("Version", null);
    
                if (value != null)
                {
                    string version;
                    int separator;
    
                    version = value.ToString();
                    separator = version.IndexOf('.');
    
                    if (separator != -1)
                        int.TryParse(version.Substring(0, separator), out result);
    
                }
            }
        }
    
        catch (SecurityException)
        {
            // The user does not have the permissions required to read from the registry key.
        }
        catch (UnauthorizedAccessException)
        {
            // The user does not have the necessary registry rights.
        }
    
        return result;
    }
    #endregion
    
    #region 에뮬레이션 브라우저 버전 읽어오기
    public static BrowserEmulationVersion GetBrowserEmulationVersion()
    {
        BrowserEmulationVersion result = BrowserEmulationVersion.Default;
    
        try
        {
            RegistryKey key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
    
            if (key != null)
            {
                string programName;
                object value;
    
                programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
                value = key.GetValue(programName, null);
    
                if (value != null)
                    result = (BrowserEmulationVersion)Convert.ToInt32(value);
            }
        }
    
        catch (SecurityException)
        {
            // The user does not have the permissions required to read from the registry key.
        }
        catch (UnauthorizedAccessException)
        {
            // The user does not have the necessary registry rights.
        }
    
        return result;
    }
    
    public static bool IsBrowserEmulationSet() => GetBrowserEmulationVersion() != BrowserEmulationVersion.Default;
    #endregion
    
    #region 에뮬레이션 브라우저 설정
    public static bool SetBrowserEmulationVersion(BrowserEmulationVersion browserEmulationVersion)
    {
        bool result = false;
    
        try
        {
            RegistryKey key = Registry.CurrentUser.OpenSubKey(BrowserEmulationKey, true);
    
            if (key != null)
            {
                string programName = Path.GetFileName(Environment.GetCommandLineArgs()[0]);
    
                if (browserEmulationVersion != BrowserEmulationVersion.Default)
                {
                    // if it's a valid value, update or create the value
                    key.SetValue(programName, (int)browserEmulationVersion, RegistryValueKind.DWord);
                }
                else
                {
                    // otherwise, remove the existing value
                    key.DeleteValue(programName, false);
                }
    
                result = true;
            }
        }
        catch (SecurityException)
        {
            // The user does not have the permissions required to read from the registry key.
        }
        catch (UnauthorizedAccessException)
        {
            // The user does not have the necessary registry rights.
        }
        return result;
    }
    public static bool SetBrowserEmulationVersion()
    {
        int ieVersion = GetInternetExplorerMajorVersion();
        BrowserEmulationVersion emulationCode;
    
        if (ieVersion >= 11)
        {
            emulationCode = BrowserEmulationVersion.Version11;
        }
        else
        {
            switch (ieVersion)
            {
                case 10:
                    emulationCode = BrowserEmulationVersion.Version10;
                    break;
                case 9:
                    emulationCode = BrowserEmulationVersion.Version9;
                    break;
                case 8:
                    emulationCode = BrowserEmulationVersion.Version8;
                    break;
                default:
                    emulationCode = BrowserEmulationVersion.Version7;
                    break;
            }
        }
        return SetBrowserEmulationVersion(emulationCode);
    }
    #endregion
    반응형

    댓글

Designed by Tistory.