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

Pau*_*ney 9 windows permissions wcf named-pipes

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

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

Chr*_*son 15

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

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

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

如果您有兴趣, 请在此处详细了解

  • 我遇到了类似的情况,但我有两个进程在同一个用户的会话下运行,但是当它是Windows 7上的非管理员用户时我无法连接.我想知道是否必须指定一些特殊的东西让它在Local命名空间中创建对象? (3认同)