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


Question

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. Probé esto usando dos navegadores

  • Google Chrome:

Cuando cambio / deshabilito el proxy mientras Chrome se está ejecutando. Chrome aún usa el proxy anterior. El cambio no está afectando su proceso. Pero cuando APENAS abra Internet Options(inetcpl.cpl) > Connections > LAN Settings . El cambio de proxy anterior ahora se considera. Cuando dije Just open realmente quiero decir Just open . Es decir, no edito ni hago clic en ningún otro botón. Supongo que es entonces cuando el proxy global realmente se está cambiando (leyendo del registro) y Google Chrome está tomando el efecto de inmediato.

  • Internet Explorer 8:

Case con Internet Explorer es mucho peor. Después de cambiar / deshabilitar el proxy utilizando mi aplicación mientras se ejecuta IE e incluso después de ir a "Opciones de Internet (inetcpl.cpl)> Conexiones> Configuración de LAN" El proxy 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 deseo es que cada vez que cambie la configuración de proxy en mi aplicación, todos los navegadores que usan proxy global (independientemente de si se estén ejecutando o no) deben incorporar el cambio en la configuración al instante .

¿Cómo puedo conseguir esto?






Links