2015-12-03 2 views
3

Я пытаюсь отключить Internet Explorer 11 Автозаполнение для имен пользователей и паролей в формах с использованием реестра Windows в приложении C#.Отключить автозаполнение в IE11 через реестр Windows

Следующий код работает несколько раз (браузер перестает с просьбой сохранять пароли и галочки в настройках автозаполнения сняты), и не в другое время (то есть, без исключений, но браузер все еще спрашивает, если вы хотите сохранить пароли и установить флажки в настройках автозаполнения).

Мой вопрос: Есть ли еще один ключ, который управляет сохранением пароля, или это возможно из-за привилегий пользователя? Или я присваиваю неправильные значения разделам? Почему это иногда срабатывало и терпело неудачу?

Другой вопрос: Если веб-сайт работает в compatibility view, который отображает веб-страницы, как если бы они были просмотрены более ранней версии браузера, делает IE11 затем использовать ключи реестра от старых версий (? Например, HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\AutoComplete)

// Keys I am manipulating: 
// HKCU\Software\Microsoft\Internet Explorer\Main\FormSuggest Passwords 
// HKCU\Software\Microsoft\Internet Explorer\Main\FormSuggest PW Ask 
// others? 

RegistryKey regKey1 = default(RegistryKey); 
regKey1 = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main", true); 
regKey1.SetValue("FormSuggest Passwords", "no", RegistryValueKind.String); 
regKey1.Close(); //are these values ok? 


RegistryKey regKey2 = default(RegistryKey); 
regKey2 = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main", true); 
regKey2.SetValue("FormSuggest PW Ask", "no", RegistryValueKind.String); 
regKey2.Close(); 

Edit: я так обнаружил несколько других элементов реестра, которые появляются, связанные с Auto Complete, но неясно, какая версия Internet Explorer они применяются к. Также очень сложно найти информацию о настройках реестра IE 11 в целом.

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\AutoComplete 
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel\FormSuggest 
HKEY_CURRENT_USER\Software\Policies\Microsoft\Internet Explorer\Control Panel\FormSuggest Password 
+0

является его неспособность для одного пользователя? или он работает над средой разработки и не работает над развертыванием? – pubudut

+0

не тот же пользователь, и он работает 100% времени в среде разработки, но в развертывании не работает * иногда *. Я начинаю думать, что некоторые из этих ключей реестра требуют административных привилегий. – Alex

ответ

1

Эти ключи также доступ к Internet Explorer, когда обозревателя-> автозаполнения загружен:

HKCU\Software\Microsoft\Internet Explorer\DomainSuggestion\Enabled 
HKLM\Software\Microsoft\Internet Explorer\DomainSuggestion 
HKCU\Software\Microsoft\Internet Explorer\Main\Use FormSuggest 
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete 
HKCU\Software\Policies\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete 

Кажется роводник и доля браузера Internet Explorer некоторые варианты автозаполнения.

Вы можете использовать некоторые средства мониторинга реестра, чтобы посмотреть, к чему обращаются в представлении совместимости. Вот как я нашел эти ключи.

+0

Спасибо, я посмотрю, посмотрю, решает ли это. Это может занять некоторое время, чтобы проверить из-за непоследовательности этого вопроса. – Alex

+0

Не уверен, что это ответили на мой вопрос, но спасибо за попытку. – Alex

+0

Есть еще идея: пусть автозаполнение сохраняет некоторые пароли, обнаруживает, где оно хранится, и оставляйте программу для ее очистки при перезагрузках. Это возможно в вашем случае? –

2

Установка контроля доступа для ключа реестра может помочь решить ваши проблемы

пример

string user = Environment.UserDomainName + "\\" + Environment.UserName; 
    RegistrySecurity regSecurity = new RegistrySecurity(); 

    rs.AddAccessRule(new RegistryAccessRule(user, 
       RegistryRights.ReadKey | RegistryRights.WriteKey, 
       InheritanceFlags.None, 
       PropagationFlags.None, 
       AccessControlType.Allow)); 

    RegistryKey regKey1 = null; 
      try 
      { 
       regKey1 = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Internet Explorer\Main", 
        RegistryKeyPermissionCheck.Default, rs);      
       regKey1.SetValue("FormSuggest Passwords", "no",RegistryValueKind.String); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("\r\nUnable to read key: {0}", ex); 
      }