Cómo cambiar el Proxy Global de Windows usando C # .NET con 'Efecto Inmediato'

Estoy escribiendo una aplicación de Winform (C # .NET) para cambiar la configuración del proxy global de Windows (también conocido como Internet Explorer).

Estoy usando esto.

RegistryKey registry = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", true);
registry.SetValue("ProxyEnable", 1);
registry.SetValue("ProxyServer", "127.0.0.1:8080");

Pero se está comportando de una manera extraña. He probado esto utilizando dos navegadores

Google Chrome:

Cuando cambio / deshabilito el proxy mientras Chrome se está ejecutando. Chrome sigue utilizando el proxy anterior. El cambio no está afectando su proceso. Pero cuando yoSolo abre Internet Options(inetcpl.cpl) > Connections > LAN Settings. Ahora se considera el cambio de proxy anterior. Cuando dijeSolo abierto Realmente quiero decirSolo abierto. Quiero decir, no editar ni hacer clic en ningún otro botón. Supongo que es entonces el proxy global.De Verdad cambiando (leyendo del registro) y Google Chrome está teniendo efecto inmediatamente.

Internet Explorer 8:

El caso con Internet Explorer es mucho peor. Después de cambiar / deshabilitar el proxy usando mi aplicación mientras IE está ejecutándose e incluso después de ir a "Opciones de Internet (inetcpl.cpl)> Conexiones> Configuración de LAN" El proxy de IE en ejecución no se ve afectado. Ni siquiera si abro un nuevo enlace en una nueva pestaña. Tuve que reiniciar IE para que se incorporara ese cambio.

El comportamiento que quiero es que siempre que cambie la configuración del proxy en mi aplicación, todos los navegadores que usan el proxy global (independientemente de si se están ejecutando o no) deberíaninstantáneamente Incorporar el cambio en la configuración.

¿Cómo puedo conseguir esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta