Изменить настройки Internet Explorer программно? - PullRequest
7 голосов
/ 30 апреля 2011

Есть идеи, как мне сделать следующее с помощью C #?

  1. Переход к Tools -> Internet Options -> Security
  2. Выберите вкладку Security
  3. Нажмите кнопку Custom Level
  4. В разделе Miscellaneousизменить Display mixed content на Enable

Ответы [ 4 ]

12 голосов
/ 01 июня 2011

«Читерский» способ сделать это - изменить значение

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 0 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 1 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 3 \ 1609 HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 4 \ 1609

Где 0-4 - идентификаторы зоны, а значение 0 для разрешения, 1 для запроса и 3 для блокировки. Помните, что если ваш код делает это на чьей-либо машине, кроме вашей, вы, скорее всего, обнаружите, что ваш код заблокирован как вредоносное ПО.

«Правильный» способ сделать это - использовать API для создания IInternetZoneManager и вызвать SetZoneActionPolicy , чтобы настроить параметры URLACTION_HTML_MIXED_CONTENT в зонах, которые вы хотите настроить.

5 голосов
/ 30 апреля 2011

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

Бедная команда IE работает сверхурочно, пытаясь повысить безопасность своего браузера. Они не собираются добавлять что-то подобное, что сведет на нет все их усилия в считанные секунды.
Напомним, что даже после выбора этой опции, появится диалоговое окно подтверждения . Как вы предлагаете «щелкнуть» этим программно? (Хм, если подумать, не говорите мне. Наверное, это следующий вопрос, который вы будете задавать.)

Откажитесь от попыток сделать это программно и попросите пользователя сделать это самостоятельно. Предоставьте полный файл справки или другую документацию, объясняющую, почему вы запрашиваете, чтобы они внесли это изменение, какие функции будут недоступны, если они не решат внести это изменение, и каковы возможные угрозы безопасности для внесения такого изменения. И, конечно же, конкретные инструкции по внесению изменений.

Или, что еще лучше, измените дизайн приложения, чтобы оно не требовало общесистемного изменения настроек безопасности IE. Трудно представить законное обоснование для этого. Лучшее решение - попросить пользователя добавить ваш сайт в список «доверенных сайтов». Помните, что локальные страницы имеют настройки безопасности, отличные от удаленных по умолчанию.

0 голосов
/ 04 июня 2014

Также не забудьте групповые политики.Большинство (если не все) настройки IE также могут быть указаны в групповой политике.Согласно Параметр локальной групповой политики для страницы безопасности IE против страницы безопасности параметров Интернета Параметры групповой политики переопределяют пользовательские параметры.Итак, на моем домашнем ПК (работает без контроллера домена) у меня есть выбор для определения настроек IE либо через редактор локальной групповой политики, либо через Свойства обозревателя.Например, если я запускаю gpedit.msc, чтобы открыть редактор локальных групповых политик, выберите «Конфигурация компьютера \ Компоненты Windows \ Internet Explorer \ Панель управления обозревателем \ Страница безопасности> \ Изменить зону Интернета, измените настройку« Отображать смешанное содержимое »на« Включено », а затем выберите«Включить «в раскрывающемся списке, нажмите« Применить », затем откройте« Параметры безопасности для интернет-зоны в IE ». Я вижу, что« Отображать смешанное содержимое »изменено на« Включить »и выбор отключен, поскольку он переопределяется политикой.Для получения полного списка поддерживаемых политик загрузите WindowsServer2012 и Windows8GroupPolicySettings.xlsx из http://www.microsoft.com/en-us/download/details.aspx?id=25250

Теперь вернемся к вопросу о том, как изменить настройки программным способом.EricLaw правильно предложил использовать SetZoneActionPolicy из IInternetZoneManager.Но трудно найти примеры для вызова из C #.В итоге я скопировал http://www.pinvoke.net/default.aspx/Interfaces.IInternetZoneManager в свой код и затем сделал:

//This will disable "Download signed ActiveX" (IE setting # 0x1001) for Internet Zone (zone #3)
IInternetZoneManager izm = Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("7b8a2d95-0ac9-11d1-896c-00c04Fb6bfc4"))) as IInternetZoneManager;
IntPtr pPolicy = Marshal.AllocHGlobal(4);
Marshal.Copy(new int[] { 3 }, 0, pPolicy, 1);//3 means "Disable"
int result = izm.SetZoneActionPolicy((uint)UrlZone.Internet, (uint)0x1001, pPolicy, 4, (uint)UrlZoneReg.CurrentUserKey);
Marshal.ReleaseComObject(izm);
Marshal.FreeHGlobal(pPolicy);

Я также попытался изменить групповую политику программным способом.Я использовал библиотеку https://bitbucket.org/MartinEden/local-policy, а затем:

//This will disable "Download signed ActiveX controls" computer policy for Internet Zone (zone #3)
const string keyPath = @"SOFTWARE\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3";
var gpo = new LocalPolicy.ComputerGroupPolicyObject();
using (var machine = gpo.GetRootRegistryKey(LocalPolicy.GroupPolicySection.Machine))
{
    using (var terminalServicesKey = machine.CreateSubKey(keyPath))
    {
        terminalServicesKey.SetValue("1001", 3, Microsoft.Win32.RegistryValueKind.DWord);
    }
}
gpo.Save();

После успешного тестирования приведенного выше кода на Win7 SP1 с IE 11 я решил вернуться к первоначальному предложению от EricLaw: изменить HKEY_CURRENT_USER \ Software\ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ * \ 1001, потому что именно это рекомендует Microsoft.См., Например, Как усилить параметры безопасности для зоны «Локальный компьютер» в Internet Explorer или Улучшенная безопасность просмотра

0 голосов
/ 30 апреля 2011

Я не уверен, но я думаю, что вы можете найти все эти настройки в «реестре». Вам необходимо выяснить соответствующий ключ. И чтобы изменить эти ценности, вам нужно иметь соответствующие права. Доступ к реестру можно получить из .net кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...