Sno*_*ody 3 port tcp client-server windows-server-2012
如何授予应用程序访问权限以侦听一个特定端口,而无需以管理员身份运行它或禁用 UAC?
根据策略,必须从旧服务器 (Windows Server 2003) 过渡到 Windows Server 2012。
此服务器的主要目的是运行第三方应用程序,该应用程序侦听特定(非标准)端口并响应请求。(它必须手动运行,它不是 Windows 服务。)
在旧服务器上,只要防火墙设置为允许该端口打开,它就可以像任何旧用户一样正常运行。在 2012 年,即使防火墙配置为允许它,它也必须以管理员身份运行才能被允许打开端口。
我理解出于安全目的这样做的必要性(任意用户不应该能够打开服务器上的任意端口,即使他们有登录访问权限)但是当我真的需要允许访问时呢?
注意:我不希望应用程序以管理员身份运行。我不想禁用 UAC。我希望所有安全措施都保持原状,只允许这个应用程序(它可以有自己的用户帐户)能够打开一个端口并监听它。
我搜索了一些有希望的搜索词,但只得到了有关 Windows Server 2012 自己的服务需要哪些端口的信息。
编辑有关应用程序的更多信息。它只是使用带有bind()和listen()和的普通Winsock accept()。它不使用任何像 HTTPListener 这样的 Windows 服务。那么,当以普通用户身份运行时,如何追踪导致套接字无法打开的原因?
已编辑,因为 OP 提供了更多信息:
侦听 TCP 端口不需要管理员权限。但是,像 HTTPListener 这样的一些助手需要管理员权限。在这种情况下,请尝试配置预留,以便用户可以侦听该端口。
netsh http add urlacl url=http://+:80/MyUri user=DOMAIN\user
https://msdn.microsoft.com/en-us/library/ms733768.aspx?f=255&MSPPError=-2147217396
在您的情况下,使用 winsock,绑定到端口不会触发 UAC 或需要管理员权限。这是别的东西。我非常喜欢的一个工具是Sysinternal 的 Process Monitor!
添加过滤器 (CTRL+L)“结果拒绝访问”。这将显示所有尝试访问路径的进程,该进程缺少权限。您可以使用过滤器来缩小问题范围。
| 归档时间: |
|
| 查看次数: |
9596 次 |
| 最近记录: |