在非管理员用户客户端无法沟通使用net.pipe与服务(Client on non-admin us

2019-06-27 06:38发布

我有一个使用net.pipe协议承载WCF服务的客户端应用程序。 客户端无法与它们的管理员用户下运行的其他WCF服务进行通信。

我已阅读,你可以不使用不同的用户之间的沟通net.pipe。

有没有办法通过它传递?

Answer 1:

我已阅读,你可以不使用不同的用户之间的沟通net.pipe。

这是不正确的一般。 这里是什么,我想你指的是一个总结:

如果您的操作系统上比Windows Vista的运行早期是没有问题的:任何进程应该能够举办任何其他本地进程访问的WCF服务net.pipe。

如果您在Windows Vista或更高版本上运行,一个WCF服务net.pipe只会在同一个登录会话中运行的进程访问(例如,相同的交互式用户的会话中),除非托管WCF服务的过程与提升的权限运行SeCreateGlobalPrivilege。

Windows服务在自己的登录会话中运行,并有特权SeCreateGlobalPrivilege,所以自托管和IIS托管WCF net.pipe服务是在同一台机器上的其他登录会话进程可见。

在我所遇到的地方,这是一个问题,大多数情况下,解决办法是始终托管在Windows服务WCF服务,使用双面合同,如果有必要的交互会话期间扭转了客户端和服务器的角色。

也可以看看:

  • 创建命名管道所需的最低权限的OS(WCF)
  • 获取EndpointNotFoundException与NetNamedPipeBinding在C#; 需要创建一个全局命名管道
  • 通过命名管道连接从Windows服务(会话#0)到桌面应用程序(会话#1)


文章来源: Client on non-admin user can't communicate using net.pipe with services