我的任务是为网络中的本地计算机创建一个侦听器。这台计算机从Web应用程序中获取POST并打印一些东西。
到目前为止,我所做的是在特定端口创建一个httpListener,当收到POST时,我将内容发送给打印机。这可以正常工作,但只有当用户拥有管理员权限时,因为" netsh http...
"需要管理员权限才能执行。
有没有办法以某种方式绕过这些限制,因为计算机是一个简单的电脑,它不能拥有管理员权限?
该应用程序是用VB.NET编写的,将在WindowsServer网络中的Windows10 PC中运行。
答案 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://github.com/sukona/Grapevine
https://msdn.microsoft.com/en-us/library/windows/desktop/cc307223(v=vs.85).aspx
我查看MSDN链接以获取其他参数。您似乎可以进一步锁定ACL命令。
(我也不知道你为什么被投票。你的问题非常好,我发现它是最好的结果之一,因为我有同样的问题。)