“无需以管理员身份运行”之 WCF 版

阅读数:502 2007 年 9 月 13 日

话题:SOA.NET安全语言 & 开发架构

在 Windows 社区中一直存在的一个问题就是需要使用管理员权限来运行应用程序,导致了一些在 Windows Vista 中类似 UAC 特性这样有问题的设计。

在一个尽力纠正这些年的错误实践中,微软的员工喊出“无需以管理员身份运行”的口号。当然,除了开发人员获得一个需要在受限权限下运行应用程序的工具外,其他的并不重要。Nicholas Allen 写到:

我想把这个帖子当作一个对创建和部署服务的开发人员的提醒。我了解那些部署要求访问受限资源服务的人们。最常见的受限资源是能够注册一个监听器到 HTTP 的部分命名空间上,不过本意见适用于任何受限资源。我常常看到这些人通过把服务运行于管理员帐号下来访问受限资源。不要这样做。这是一个糟糕的做法。极大提高你的服务的权限永远不是正确的做法。

Nicholas 有两篇文章谈到了 WCF 和 HTTP 的问题。简单举个例子就是,侦听 HTTP 请求就是一种受限操作。通常,所有地址被分配给管理员帐号,但是它们也可以被分配给其他用户。

在 Windows XP SP2 和 Windows Server 2003 中,HTTP 地址和 SSL 证书能利用"httpcfg.exe"来保留。Vista 并没有这个程序,取而代之的是名为"netsh.exe"的程序。

跳过那些步骤,让 HTTP 工作于非管理员帐号所付出的代价比获得的回报少的多。由于重新分配地址必须以管理员身份完成,所以安装程序也必须以管理员的帐号运行。之后,我们就可以让用户运行于管理员权限下了。

查看英文原文:Don't Run as Administrator: WCF Edition