2014-02-20 62 views
0

我使用这个代码,让浏览器的功能仿真在我的WPF应用程序:FEATURE_BROWSER_EMULATION的Windows XP

string executablePath = Environment.GetCommandLineArgs()[0]; 
MessageBox.Show(executablePath); 
string executableName = System.IO.Path.GetFileName(executablePath); 
MessageBox.Show(executableName); 

MessageBox.Show("Is64BitOperatingSystem : " + Environment.Is64BitOperatingSystem); 

string key = string.Empty; 
if (Environment.Is64BitOperatingSystem) 
    key = @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; 
else 
    key = @"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION"; 

RegistryKey registrybrowser = Registry.CurrentUser.OpenSubKey(key, true); 
MessageBox.Show(registrybrowser.ToString()); 

if (registrybrowser == null) 
{ 
    RegistryKey registryFolder = Registry.CurrentUser.OpenSubKey 
     (@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl", true); 
    MessageBox.Show(registryFolder.ToString()); 
    registrybrowser = registryFolder.CreateSubKey("FEATURE_BROWSER_EMULATION"); 
} 
registrybrowser.SetValue(executableName, 0x02710, RegistryValueKind.DWord); 
registrybrowser.Close(); 

当我尝试运行我在Windows XP(SP2,FW 4)应用中,registrybrowser对象null,因为没有找到密钥我猜。 如何在Windows XP上设置此功能模拟?

+0

32位操作系统没有Wow6432Node密钥。只需删除Is64BitOperatingSystem测试。 –

+0

你说得对。我的Windows XP上没有FeatureControl键。我不得不通过代码添加它。 – Ben

回答

0

我的Windows XP上没有FeatureControl注册表项。以下是修复方法:

string executablePath = Environment.GetCommandLineArgs()[0]; 
string executableName = System.IO.Path.GetFileName(executablePath); 

string key = @"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"; 

RegistryKey registrybrowser = Registry.CurrentUser.OpenSubKey(key, true); 

if (registrybrowser == null) 
{ 
    RegistryKey registryFolder = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl", true); 

    if (registryFolder == null) 
    { 
     RegistryKey registryFolderParent = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main", true); 
     registryFolderParent.CreateSubKey("FeatureControl"); 
     registryFolder = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl", true); 
    } 

    registrybrowser = registryFolder.CreateSubKey("FEATURE_BROWSER_EMULATION"); 
} 
registrybrowser.SetValue(executableName, 0x2AF9, RegistryValueKind.DWord); 
registrybrowser.Close();