4

我遇到了异常AddressAccessDeniedException,因为我的进程没有注册 URL 的权限。我首先以管理员身份运行我的程序:好的,它工作。

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

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

我看到了命令:

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

我应该用那个吗?如果是,如何?

我想做的是在没有管理员身份的情况下授予访问权限......这样说,看起来很愚蠢,但可能......

4

1 回答 1

7

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

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

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

于 2011-10-06T10:09:55.537 回答