WCF wsdualhttpbinding client sin elevación
He creado un servicio de Windows (servidor) y un WPF (cliente) que utiliza la función de devolución de llamada wsdualhttpbinding de WCF. Todo entre las dos piezas de software funciona correctamente, pero el problema que tengo es que el cliente necesita ejecutar privilegios elevados de administrador para funcionar (lo cual es comprensible porque tiene que abrir puertos para comunicarse con el servidor)
¿Hay alguna forma de configurar el cliente para que funcione sin elevación? ¿O tal vez cree una conexión permanente única para que el cliente no necesite ser elevado en todo momento?
Me estoy quedando sin ideas y términos de búsqueda de Google.
ACTUALIZAR
He encontrado una solucion. ¡Corríjame si hay otra mejor práctica que pueda seguir!
Agregué los botones 'Activar' y 'Desactivar' a la aplicación cliente que ejecuta netsh para abrir (o cerrar) y reservar un puerto.
Habilitar
Process process = new Process();
process.StartInfo = new ProcessStartInfo("netsh", @"http add urlacl url=http://+:" + PortNumber + @"/ user=DOMAIN\username");
process.StartInfo.Verb = "runas";
process.Start();
process.WaitForExit();
Inhabilitar
Process process = new Process();
process.StartInfo = new ProcessStartInfo("netsh", "http delete urlacl url=http://+:" + PortNumber + "/");
process.StartInfo.Verb = "runas";
process.Start();
process.WaitForExit();