带有通配符(或httpapi.dll)的NETSH HTTP ADD URLACL



在NETSH HTTP ADD URLACL中使用+和*的正确语法是什么?

我知道微软的以下文章,但我只是找不到一种方法来解决我的问题:https://msdn.microsoft.com/en-us/library/aa364698(v=vs.85).aspx

我想实现的是,只允许特定用户(这不是问题)能够侦听指定的URL,但要使用通配符。

通常,此用户用于服务帐户。因此,当我的服务需要支持额外的url 时,我想避免执行额外的netsh http add urlacl url=X://mynewUrl.net:1234/user=MyUser(本地用户)

我想做的是执行一次这样的操作,这将涵盖我的情况,当然我将始终使用相同的TCP/IP端口:

netsh http add urlacl url=https://+:1234/user=MyUser或带有*

因此,当我添加我的服务需要支持的额外URL()时,我不需要每次都执行netsh。

我也希望能够使用IP地址。

我尝试了许多不同的组合,但都没有成功。当我尝试运行该服务时,访问被拒绝。

需要注意的是,Netshhttp的行为与httpapi.dll中的API相同,所以我猜它实际上使用了httpapi.dll。我也对这个库使用了PlatformInvoke,并且具有完全相同的行为。

另一个注意事项是,我使用的是Windows 10和Windows Server 2012/2012 R2。

有什么想法可以解决这个问题,这样我就不需要在任何时候添加新的预订来支持我的服务的额外URL了吗?

将netsh与SDDL agrument一起使用应该可以获得您需要的东西:

netsh http add urlacl url=http://+:1234/ sddl=D:(A;;GA;;;<process owner sid>)

获取用户sid:

whoami /user

如果你不确定所有者是否是你的用户,这个oneliner将有所帮助:

Get-WmiObject -Class Win32_Process -Filter 'Name = "powershell.exe"' | % { $_.GetOwner() } | % { (New-Object System.Security.Principal.NTAccount($_.Domain + "" + $_.User)).Translate([System.Security.Principal.SecurityIdentifier]).Value }

相关内容

  • 没有找到相关文章

最新更新