netsh http add urlacl问题

11

我正在尝试从WIX安装程序中设置一些端口。对于WinXP,我们在自定义操作中使用httpcfg,这个方案是有效的。对于Win7,我们正在尝试:

netsh http add urlacl url=http://127.0.0.1/8346/ user="NT AUTHORITY\Authenticated Users" sddl="D:(A;;GX;;;AU)"
WIX安装程序可以正确执行此语句并设置端口-对于运行.msi的管理员用户。低权限用户无法访问这些端口。我需要为计算机上的所有用户设置它,但是我已经尝试了所有我能想到的方法但没有成功。
我发现奇怪的是,管理员用户可以使用netstat -a查看分配的端口,但使用netsh http show urlacl根本不会出现...这是否表示存在问题?

1
为什么您同时使用用户和SDDL参数?在我看来,只需要/有用其中一个。 - Christian
user="NT AUTHORITY\Authenticated Users" 是为此用户添加权限的唯一方式... 如果您想授权给您的用户,您必须在包括此用户的用户组中指定此用户。或者不指定此选项,只使用sddl选项。 个人建议使用sddl "D:(A;;GX;;;IU)" 用于交互式用户。https://learn.microsoft.com/en-us/windows/win32/secauthz/ace-strings - Mathieu CARBONNEAUX
您可以在任何人的位置使用WD(SDDL_EVERYONE,无论是否交互登录)来代替IU(SDDL_INTERACTIVE = 交互式登录用户) 。 https://learn.microsoft.com/en-us/windows/win32/secauthz/sid-strings - Mathieu CARBONNEAUX
2个回答

8
如果8346是你的端口号,你的语法是不正确的,应该是:
netsh http add urlacl url=http://127.0.0.1:8346/ user="NT AUTHORITY\Authenticated Users"

虽然这个回答是一个正确的陈述,修正了拼写错误,但我不明白它如何回答问题。你本可以使用注释来提供这些信息。 - Gyuri
1
如果你想让它看起来更整洁,可以使用加号来避免输入任何地址,这是任何解析为本地计算机的IP或名称的快捷方式,即"http://+:8346/"。 - Tony Wall

2

您可以在安装程序的设置文件中添加条件,以在安装开始时提示UAC。这将确保所有安装程序都由管理员启动,即使用户没有管理员权限,也将在防火墙中添加异常。


这似乎并没有回答问题,即使它可能是正确的。此外,这个答案没有具体细节。 - Gyuri
您需要使用支持引导程序(Setup.exe)的较新版本的WIX才能正确以管理员身份启动。否则,仅在通过管理员命令/进程从MSIEXEC启动时才能正常工作。引导程序是唯一的保证,即使从shell双击Setup.exe,也可以保证您正在以管理员身份运行。通常还会添加启动条件,以向用户/管理员日志解释为什么失败,而不是一些奇怪的失败消息,例如,在双击MSI /没有setup.exe引导程序的情况下。您无法“提示UAC”,只能通过另一个进程/setup.exe来提示系统。 - Tony Wall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接