2014-02-20 3 views
0

Я использую этот код, чтобы разрешить эмуляцию функций браузера в моем МОФ применения: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

Вы правы. И у меня не было ключа FeatureControl на моем Windows XP. Мне пришлось добавить его по коду. – Ben

ответ

0

У меня не было ключа реестра FeatureControl на моей Windows XP. Вот как это исправить:

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();