Включить прокси, редактируя реестр в режиме реального времени в C # - PullRequest
1 голос
/ 03 октября 2009

Это код, который я использую для включения прокси. Он работал нормально на всех версиях Windows вплоть до Server 2008 R2 (Windows 7 Kernal). Теперь это работает только в первый раз. Я запускаю свое приложение и включаю прокси, и это работает нормально. Затем я пытаюсь отключить его, используя код, похожий на код ниже. Это никогда не отключается. Если я вручную отключу его, зайдя в настройки Интернета, а затем попробую включить его снова через свое приложение, оно не будет включено.

Насколько я могу судить, первая команда InternetSetOption в моем коде отменяет изменения, которые я делаю с помощью функции regKey.SetValue (). По крайней мере, это то, что происходит, когда я прохожу через это. Кто-нибудь видел эту проблему раньше, или знает, как ее исправить. Я пытался найти работу некоторое время, и ничего не получилось. Любой вклад будет оценен.

regKey.SetValue("ProxyServer", "localhost:" + Settings.Default.Port, RegistryValueKind.String);
regKey.SetValue("ProxyEnable", 1, RegistryValueKind.DWord);
                        regKey.Flush();
InternetSetOption(IntPtr.Zero, 39, IntPtr.Zero, 0); //INTERNET_OPTION_SETTINGS_CHANGED
InternetSetOption(IntPtr.Zero, 37, IntPtr.Zero, 0); //INTERNET_OPTION_REFRESH

Ответы [ 2 ]

1 голос
/ 03 октября 2009

Включение и отключение прокси путем записи в реестр не очень хорошая практика. Смотрите этот вопрос:

Включение / отключение прокси-приложения некорректно работает с IE

0 голосов
/ 20 декабря 2013

Хотя это обходное решение определенно не является чистым решением, оно работает на Server 2008 R2 и Windows 7.

После настройки разделов реестра, связанных с прокси, просто запустите Internet Explorer и обновите SystemWebProxy:

Process objProcess = Process.Start("IEXPLORE.EXE", "-nomerge " + @"http://www.google.com/");
Thread.Sleep(TimeSpan.FromSeconds(2));
objProcess.Kill();
...