Como alterar o proxy global do Windows usando c # .net com 'Efeito imediato'
Estou escrevendo um aplicativo do Winform (C # .NET) para alterar as configurações de proxy do Windows (também conhecido como Internet Explorer).
Eu estou usando isso.
RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8080");
Mas está se comportando de uma maneira estranha. Eu testei isso usando dois navegadores
Google Chrome:Quando altero / desativo o proxy enquanto o Chrome está em execução. O Chrome ainda está usando o proxy anterior. A mudança não está afetando seu processo. Mas quando euSó abrir Internet Options(inetcpl.cpl) > Connections > LAN Settings
. A mudança anterior de proxy agora é considerada. Quando eu disseSó abrir Eu realmente quero dizerSó abrir. Quero dizer, não editando ou clicando em qualquer outro botão. Eu acho que, então o proxy global érealmente ficando mudado (lendo do registro) & Google Chrome está tomando imediatamente o efeito.
Caso com o Internet Explorer é muito pior. Depois de alterar / desativar o proxy usando o meu aplicativo enquanto o IE está em execução e mesmo depois de ir para "Opções da Internet (inetcpl.cpl)> Conexões> Configurações Lan" O proxy IE em execução não está sendo afetado. Nem mesmo se eu abrir um novo link em uma nova aba. Eu tive que reiniciar o IE para que essa alteração fosse incorporada.
O comportamento que eu quero é que sempre que eu alterar as configurações de proxy no meu aplicativo, todos os navegadores que estão usando o proxy global (independentemente de estar ou não em execução) devemimediatamente incorporar a mudança nas configurações.
Como posso conseguir isso?