没有管理员权限的本地网络中的httpListener

时间:2017-12-08 09:49:59

标签: vb.net httplistener netsh

我的任务是为网络中的本地计算机创建一个侦听器。这台计算机从Web应用程序中获取POST并打印一些东西。 到目前为止,我所做的是在特定端口创建一个httpListener,当收到POST时,我将内容发送给打印机。这可以正常工作,但只有当用户拥有管理员权限时,因为" netsh http..."需要管理员权限才能执行。 有没有办法以某种方式绕过这些限制,因为计算机是一个简单的电脑,它不能拥有管理员权限? 该应用程序是用VB.NET编写的,将在WindowsServer网络中的Windows10 PC中运行。

1 个答案:

答案 0 :(得分:0)

netsh http add urlacl url="http://127.0.0.1:1234/" user=DOMAIN\USER

根据我的阅读,反斜杠很重要(尾随端口号)。您也可以将127.0.0.1替换为+*(作为通配符)。奇怪的是,我让localhost在两个不同的端口上进行侦听,一旦我添加了一个端口,就可以听到。似乎也可以为user参数指定一个组。 (在大多数示例中,如果您可以提供帮助,他们会展示user=Everyone我绝对不会建议。将其锁定到一个帐户,就像服务帐户一样。)

就我而言,我使用 Grapevine 。它包裹了HttpListener,但是给你一个例子,它不太相关。 (我强烈建议您查看它,特别是如果您正在创建API。它已经更新多年,开发人员仍然会对反馈做出响应,并为您节省大量工作。)请注意在HttpListener命令中镜像用于netsh的前缀字符串。 (通过通配符监听肯定不同于localhost,反之亦然。)

https://serverfault.com/questions/273875/can-we-use-wildcards-with-netsh-http-add-urlacl-in-windows-7-2008r2

https://github.com/sukona/Grapevine

https://msdn.microsoft.com/en-us/library/windows/desktop/cc307223(v=vs.85).aspx

我查看MSDN链接以获取其他参数。您似乎可以进一步锁定ACL命令。

(我也不知道你为什么被投票。你的问题非常好,我发现它是最好的结果之一,因为我有同样的问题。)