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

Posted

技术标签:

【中文标题】创建命名管道 (WCF) 所需的最低操作系统权限【英文标题】:Minimum OS Permissions required to create named pipe (WCF) 【发布时间】:2011-05-05 03:43:28 【问题描述】:

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

用户是否需要特定权限才能使 exe 能够创建命名管道?我尝试以具有相当低权限的用户身份运行(即仅在本地用户组中),这工作正常 - 但我担心当我部署到客户端站点时,用户可能会以某种方式受到限制表示命名管道创建不起作用。

【问题讨论】:

【参考方案1】:

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

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

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

更多详情here如果您有兴趣。

【讨论】:

感谢@Chris,提供了很好的答案和非常有用的信息。所以推测,只要客户端和服务器都在登录用户会话中运行,就不应该有任何权限问题? 我遇到了类似的情况,但我有两个进程在同一个用户的会话下运行,但是当它是 Windows 7 上的非管理员用户时,我无法连接。我想知道如果我必须指定一些特殊的东西来让它在本地命名空间中创建对象?

以上是关于创建命名管道 (WCF) 所需的最低操作系统权限的主要内容,如果未能解决你的问题,请参考以下文章

Sitecore 登录所需的最低角色和访问权限

可更新查询所需的最低权限 (Access Project)

将数据流式传输到 BQ - 服务帐户所需的理想最低权限

MS Access - 后端文件和包含它的文件夹所需的最低权限是啥

Smack 4.1 所需的最低 Android API 级别是多少?

使用命名管道 WCF 服务时通信对象出错