2011-01-14 110 views
8

Estoy tratando de configurar algunos puertos desde un instalador WIX. Para WinXP usamos httpcfg en una acción personalizada y esto funciona bien. Para Win7, que estamos tratando:netsh http add urlacl problema

netsh http add urlacl url=http://127.0.0.1/8346/ user="NT AUTHORITY\Authenticated Users" sddl="D:(A;;GX;;;AU)" 

El instalador WIX se ejecuta correctamente esta declaración y configura los puertos - para el administrador que dirige el .msi. Los usuarios con privilegios menores no pueden acceder a estos puertos. Necesito configurarlo para todos los usuarios en la máquina, pero he intentado todo lo que puedo pensar sin suerte.

Algo que me parece extraño es que el usuario administrador puede ver los puertos asignados usando netstat -a, pero no aparecen en absoluto usando netsh http show urlacl ... ¿es eso un indicador de algo incorrecto?

+0

¿Por qué usa los parámetros user y sddl? En mi humilde opinión, solo uno de ellos es obligatorio/útil. – Christian

Respuesta

2

Puede agregar condiciones al archivo de configuración para solicitar el UAC cuando se inicia la instalación. esto asegurará que todo el instalador lo inicie el administrador y, por lo tanto, agregará excepciones en el firewall incluso cuando el usuario no tenga derechos de administrador.

+0

Esto no parece responder a la pregunta, aunque probablemente sea correcta. Además, no hay detalles en esta respuesta. – Gyuri

+0

Tendrá que usar las versiones más recientes de WIX que admiten bootstrapper (Setup.exe) para iniciarse correctamente como administrador. De lo contrario, solo funcionará cuando se inicie a través de MSIEXEC desde un comando/proceso de administrador. Bootstapper es la única manera de garantizar que se está ejecutando como administrador incluso cuando se hace doble clic en Setup.exe desde el shell. También es común agregar una condición de inicio para explicar al usuario/registro de administrador por qué falló, en lugar de un mensaje de error extraño, p. al hacer doble clic en MSI/sin setup.exe bootstrapper. No puede "solicitar UAC", solo el sistema a través de otro proceso/setup.exe. –

6

Si 8346 es su número de puerto, su sintaxis es incorrecta, debería ser.

netsh http add urlacl url=http://127.0.0.1:8346/ user="NT AUTHORITY\Authenticated Users" 
+0

Si bien la respuesta es una declaración verdadera para corregir el error tipográfico, no veo cómo responde la pregunta. Podrías haber usado un comentario para esta información. – Gyuri

+0

Si quiere que sea un poco más ordenado, podría usar el signo más para evitar tener que ingresar una dirección, es un atajo para cualquier IP o nombre que se resuelva en la máquina local, es decir, "http: // +: 8346 /" . –