c # - Webbrowser kontrol ignorerer FEATURE\_BROWSER\_EMULATION reg entry

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg udvikler en brugerdefineret browserløsning med .net s webbrowser kontrol.
For at deaktivere IE-Compatibilty View, indstiller jeg registreringsdatabasen
Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE\_BROWSER\_EMULATION:


[[Sreenshot regedit]] http://zbirk.mirk.at/browserreg.png 'Skærmbillede' [2]


Jeg forsøgte at bruge værdierne: dword=8000, dword=8888, dword=9000, men webbrowser kontrollen synes at ignorere disse reg entries.


Måske har nogen også disse problemer og kan hjælpe mig.

Bedste reference


WebBrowser-kontrollen respekterer absolut disse nøgler.


Husk at mens taskman kan vise application.exe i navnsøjlen, hvis du fejler, er exe-navnet application.vshost.exe


Så i min ansøgning forsøger jeg bare at oprette nøglen hver gang appen kører. Hvis det ikke opretter det (fordi det allerede eksisterer), så fortsætter jeg med at køre, hvis det opretter nøglen, så informerer jeg brugeren om, at de skal genstarte applikationen.

Andre referencer 1


Sørg for, at du ikke kører inden for vshost


App navnet ville være anderledes, nemlig appname.vshost.exe

Andre referencer 2


Thx for dit svar, nu arbejder det.


Hendes er min arbejdende fred i kode:


public void setIEcomp()
    {
        String appname = Process.GetCurrentProcess().ProcessName+".exe";
        RegistryKey RK8 = Registry.LocalMachine.OpenSubKey("Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE\_BROWSER\_EMULATION",RegistryKeyPermissionCheck.ReadWriteSubTree);            
        int value9 = 9999;
        int value8 = 8888;
        Version ver = webBrowser1.Version;
        int value = value9;
        try
        {
            string[] parts = ver.ToString().Split('.');
            int vn = 0;
            int.TryParse(parts[0], out vn);
            if (vn != 0)
            {
                if (vn == 9)
                    value = value9;
                else
                    value = value8;
            }
        }
        catch
        {
            value = value9;
        }
        //Setting the key in LocalMachine
        if (RK8 != null)
        {
            try
            {
                RK8.SetValue(appname, value, RegistryValueKind.DWord);
                RK8.Close();
            }
            catch(Exception ex)
            {
                //MessageBox.Show(ex.Message);
            }
        }
    }

Andre referencer 3


Jeg kunne også ikke se, at FEATURE\_BROWSER\_EMULATION gjorde nogen forskel i min ansøgning.


Jeg testede FEATURE\_BROWSER\_EMULATION funktionaliteten ved manuelt at redigere registreringsdatabasen med regedit. Intet gjorde jeg nogen forskel. Min hostede side mislykkedes stadig på en ny JavaScript-kode og kunne ikke indlæse eksterne biblioteker.


Jeg fandt min fejl:


Jeg redigerer 64-bit visning af registreringsdatabasen med regedit. Min app kørte som en 32-bit app og kigger på 32-bit visning af registreringsdatabasen. Derfor ændrede mine ændringer til registreringsdatabasen ingen indflydelse på min ansøgning. Forresten, WPF projektskabelon standard til 'Foretrækker 32-bit.'


Manuel redigering med regedit i Wow6432Node-tasten virket:


HKEY\_LOCAL\_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE\_BROWSER\_EMULATION


Selvfølgelig vil indstillingen af ​​DWORD-værdien programmeret i din ansøgning også fungere, da din 32-bit applikation vil blive redigeret i Wow6432Node.