编程语言
首页 > 编程语言> > c# – AddressAccessDeniedException:在没有netsh的情况下解决它?

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

作者:互联网

我遇到了异常AddressAccessDeniedException,因为我的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的工具,它不是操作系统安装的一部分(必须单独安装).

标签:c,http,wcf,user-permissions
来源: https://codeday.me/bug/20190613/1235656.html