2012-03-27 107 views
2

我正在开发一个使用.net的Webbrowser控件的自定义浏览器解决方案。 要禁用IE-了兼容性视图,我设置的注册表项 软件\微软\的Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION:Webbrowser控件忽略FEATURE_BROWSER_EMULATION注册条目

[撷取画面注册表编辑器] http://zbirk.mirk.at/browserreg.png “截图”

我试图使用的值:dword = 8000,dword = 8888,dword = 9000,但webbrowser控件似乎忽略这些注册条目。

也许有人也有这个问题,可能会帮助我。

+1

在调试器中运行VS2010 x64时,会一直出现此问题。但是,在发布应用程序并运行.exe之后,您所描述的注册表设置会正常生效。 – pgfearo 2012-06-06 19:11:49

回答

3

WebBrowser控件肯定会尊重这些密钥。

请记住,尽管taskman的可以在名称栏中显示application.exe,如果你正在调试的exe文件名是application.vshost.exe

所以在我的应用程序的sI只是尝试创建的关键每次在应用程式运行。如果它创建失败(因为它已经存在),那么我继续运行,如果它创建了密钥,那么我通知用户他们需要重新启动应用程序。

1

Thx为您的答复,现在它的工作。

她是我的代码工作和平:

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); 
      } 
     } 
    } 
+1

如果你解决了它,你应该接受一些答案。你解决了吗? – Coder12345 2013-10-10 19:39:46

+0

我不知道你是否最初使用注册表编辑注册表的64位视图。当您以编程方式切换到设置密钥时,它的工作原因是您的程序正在编辑注册表的32位视图。 – Wally 2017-03-17 18:38:32

2

确保您不会vshost内运行

应用程序名称将不同即appname.vshost.exe

0

我也能没有看到FEATURE_BROWSER_EMULATION在我的应用程序中有所不同。

我正在通过手动编辑注册表与regedit来测试FEATURE_BROWSER_EMULATION功能。我没有做任何改变。我的托管页面仍然无法使用任何新的JavaScript,并且无法加载外部库。

,我发现我的错误:

我编辑用注册表编辑器注册表的64位视图。我的应用程序以32位应用程序的形式运行,并查看注册表的32位视图。这就是为什么我对注册表的更改似乎对我的应用程序没有影响。顺便说一下,WPF项目模板默认为“首选32位”。

与Wow6432Node项中注册表编辑器手动编辑工作:

HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \微软\的Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION

当然,你的应用程序中的编程设置DWORD值会也可以工作,因为你的32位应用程序将在Wow6432Node中进行编辑。