我正在使用.net的Webbrowser控件开发自定义浏览器解决方案。 要禁用IE-Compatibilty视图,我设置了注册表项 Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION:
[Sreenshot regedit] http://zbirk.mirk.at/browserreg.png“截图”
我试图使用值:dword = 8000,dword = 8888,dword = 9000,但webbrowser控件似乎忽略了这些reg条目。
也许有人也有这个问题并且可以帮助我。
答案 0 :(得分:3)
WebBrowser控件肯定会尊重这些键。
请记住,虽然taskman可能会在名称列中显示application.exe,但如果您正在调试exe名称,则为application.vshost.exe
所以在我的应用程序中,我只是尝试在每次应用程序运行时创建密钥。如果它无法创建它(因为它已经存在),那么我继续运行,如果它创建了密钥,那么我通知用户他们需要重新启动应用程序。
答案 1 :(得分:2)
确保您没有在vshost中运行
应用名称会有所不同,即appname.vshost.exe
答案 2 :(得分:1)
感谢您的回复,现在正在运作。
她是我工作的代码和平:
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);
}
}
}
答案 3 :(得分:0)
我也看不出FEATURE_BROWSER_EMULATION在我的申请中有任何不同。
我正在通过使用regedit手动编辑注册表来测试FEATURE_BROWSER_EMULATION功能。我没有做任何改变。我的托管页面仍然在任何新的JavaScript上失败,无法加载外部库。
我发现了我的错误:
我正在使用regedit编辑注册表的64位视图。我的应用程序是作为一个32位应用程序运行并查看注册表的32位视图。这就是为什么我对注册表的更改似乎对我的应用程序没有影响。顺便说一句,WPF项目模板默认为“首选32位”。
使用Wow6432Node键中的regedit进行手动编辑:
HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ MAIN \ FeatureControl \ FEATURE_BROWSER_EMULATION
当然,在应用程序中以编程方式设置DWORD值也可以,因为您的32位应用程序将在Wow6432Node中编辑。