AddressAccessDeniedException:在没有netsh的情况下解决它?

我遇到了exceptionAddressAccessDeniedException因为我的processus没有权限注册URL。 我首先以管理员身份运行我的程序:好吧,它有效。

但我现在想要分发我的应用程序,我希望每个用户都能够运行它而无需成为管理员。

有没有办法自动授予用户访问权限?

我看到了命令:

 netsh http add urlacl url=http://+:8000/ user=DOMAIN\UserName 

我应该用吗? 如果有,怎么样?

我想做的就是在没有管理员的情况下授予访问权限…这样说,它似乎很愚蠢,但可能……

这是不可能的。 Windows使用内核驱动程序处理HTTP请求,并且在此驱动程序上打开侦听器由ACL(访问控制列表)保护。 如果要打开侦听器以便应用程序可以侦听来自其他计算机的请求,则必须以管理员身份运行它以通过ACL,或者您必须具有权限(=您必须在ACL中)。 您也可以关闭UAC(用户访问控制)以绕过这些检查。

netsh是一个允许您为HTTP.sys(内核驱动程序)设置ACL的工具。 您可以授予任何用户监听所选端口的权限,但显然您必须是管理员才能授予这些权限,或者您必须具有委派已配置权限的权限,否则此安全性的全部内容将消失。

将该netsh调用添加到您的安装包中,并要求以admin身份完成安装(这在许多应用程序中很常见)。 另请注意,netsh仅适用于Windows Vista,Windows 7,Windows Server 2008和Windows Server 2008 R2。 对于Windows 2003和Windows XP(至少需要SP2),您需要另一个名为httpcfg工具,它不是操作系统安装的一部分(必须单独安装)。