WCF本地只有NamedPipe

Nat*_*han 5 wcf named-pipes self-hosting usersession

这是我的问题的一个简单例子.我正在编写一个自托管WCF服务的应用程序,仅在用户会话中进行通信.当多个用户在终端服务计算机上同时运行此应用程序时,只要他们没有本地管理员权限,所有用户都会感到满意.如果两个或多个用户是管理员,第一个用户创建服务,第二个用户,因为服务已创建全局...

没有WCF的简单Win32实现将创建一个带有"Local"前缀的命名管道.WCF似乎首先尝试创建全局共享内存映射,然后失败,然后创建本地映射.

有没有人找到一种方法来自我托管当前用户会话本地的WCF服务,即使该用户是本地管理员?

Chr*_*son 1

简单的方法是让每个实例使用不同的服务 URL(从用户会话的某些特征派生以使其唯一 - 例如会话登录 ID)。

如果 WCF 绑定以足够的权限运行,则无法阻止它在全局命名空间中发布其端点详细信息(也称为真实管道名称)。但是,如果您的服务发现它以具有提升权限的管理员身份运行,也许您可​​以在打开服务主机之前调整进程令牌权限以禁用 SeCreateGlobalPrivilege。

  • 看起来不错,我只是不明白为什么微软在使用命名管道时没有办法指定范围...... (2认同)