2011-01-14 11 views
8

Ich versuche, einige Ports von einem WIX-Installer einzurichten. Für WinXP verwenden wir httpcfg in einer benutzerdefinierten Aktion und das funktioniert gut. Für Win7, wir versuchen:netsh http add urlacl Problem

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

Wix Installer führt richtig diese Aussage und setzt die Ports - für den Administrator, der die .msi läuft. Benutzer mit geringeren Privilegien können nicht auf diese Ports zugreifen. Ich muss es für alle Benutzer auf der Maschine einrichten, aber ich habe alles versucht, was mir ohne Erfolg einfällt.

Etwas seltsam finde ich, dass der Admin-Benutzer die zugewiesenen Ports mit netstat -a sehen kann, aber sie erscheinen überhaupt nicht mit netsh http show urlacl ... ist das ein Indikator für etwas falsch?

+0

Warum verwenden Sie beide Parameter Benutzer und SDL? IMHO nur einer von ihnen ist erforderlich/nützlich. – Christian

Antwort

2

Sie können der Setup-Datei eine Bedingung hinzufügen, um beim Starten der Installation zur UAC aufzufordern. Dadurch wird sichergestellt, dass das Installationsprogramm von admin gestartet wird und somit eine Ausnahme in der Firewall hinzugefügt wird, selbst wenn der Benutzer keine Administratorrechte hat.

+0

Das scheint die Frage nicht zu beantworten, auch wenn es wahrscheinlich richtig ist. Außerdem gibt es in dieser Antwort keine Besonderheiten. – Gyuri

+0

Sie müssen die neueren Versionen von WIX verwenden, die Bootstrapper (Setup.exe) unterstützen, um ordnungsgemäß als Administrator zu starten. Sonst funktioniert es nur, wenn es über MSIEXEC von einem Administratorbefehl/-Prozess gestartet wird. Bootstapper ist der einzige Weg zu garantieren, dass Sie als Admin ausgeführt werden, auch wenn Setup.exe von der Shell aus doppelt geklickt wird. Es ist auch üblich, eine Startbedingung hinzuzufügen, um dem Benutzer-/Admin-Protokoll zu erklären, warum es fehlgeschlagen ist, und nicht irgendeine seltsame Fehlernachricht, z. wenn Sie auf MSI/ohne setup.exe bootstrapper doppelklicken. Sie können nicht "UAC anfordern", nur das System über einen anderen Prozess/setup.exe. –

6

Wenn 8346 Ihre Portnummer ist, ist die Syntax inkorrekt.

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

Während die Antwort eine wahre Aussage ist, die den Tippfehler festlegt, sehe ich nicht, wie sie die Frage beantwortet. Sie hätten einen Kommentar für diese Information verwenden können. – Gyuri

+0

Wenn Sie möchten, dass es etwas ordentlicher ist, können Sie das Pluszeichen verwenden, um zu vermeiden, dass Sie eine Adresse eingeben müssen, es ist eine Abkürzung für jede IP oder Name, die auf den lokalen Rechner aufgelöst wird, zB "http: // +: 8346 /" . –