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.

Internet Explorer 8:

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?

questionAnswers(1)

yourAnswerToTheQuestion