创建命名管道(WCF)所需的最低操作系统权限

时间:2010-11-04 15:56:25

标签: windows wcf permissions named-pipes

我有一个在登录用户的上下文下运行的exe。 exe使用WCF使自己成为命名管道服务器(它将由多个客户端调用)。

用户是否需要exe的特定权限才能创建命名管道?我尝试以相对最小的权限(即仅在本地Users组中)作为用户运行,并且这很好 - 但是我担心当我部署到客户端站点时,用户可能会以某种方式受到限制表示命名管道创建不起作用。

1 个答案:

答案 0 :(得分:15)

本地登录用户无需使用netNamedPipe绑定设置WCF服务的服务端的特殊权限。

但是,您需要担心客户端是否可以找到并连接到该服务。这有两个方面:

  1. 客户端必须在安全上下文中运行,该安全上下文由网络登录(例如模拟Web应用程序中的远程用户)建立 。这是因为WCF拒绝访问任何作为NETWORK USERS组成员的登录。
  2. 如果您在Vista或Windows7上运行,如果您希望在登录用户会话之外运行的客户端可以访问服务,则需要使用SeCreateGlobalPrivilege权限运行服务exe。这是因为WCF服务需要将管道名称发布到共享内存对象以使客户端能够找到它:如果WCF服务堆栈可以在全局命名空间中创建此共享内存对象(对所有登录会话可见),它将会。但是如果它没有必要的权限,它会在Local命名空间中创建共享内存对象(仅在同一个登录会话中可见)。将WCF服务部署为Windows服务是使其具有此权限的唯一简便方法,因此对于其会话之外的客户端是可见的。
  3. 如果您有兴趣,请提供详细信息here