限制NamedPipeServerStream的范围

| 我想使用
NamedPipeServerStream
在应用实例之间进行一些小的IPC。但是,如果服务器与客户端位于同一终端服务器会话中,则我只想将服务器作为目标服务器(如果应用程序在TS环境中运行)。 实现此目的的一种方法是使用登录用户的SID并将其与Pipes名称关联。悬停我认为,如果用户从两个不同的位置登录,这将给您带来麻烦,并且对我来说似乎也不是那么整洁。 是否可以给“ 0”一个范围以使其响应呼叫并设置该范围,以便RDP-Session建立边界?还是有人好主意如何限制范围/实现所需的行为?     
已邀请:
        如果只想将其限制为一个会话,则可以在本地名称空间中创建一个命名的互斥体,以限制其在会话中的可见性。当客户想要连接时 它可以创建相同的互斥锁,并且如果它作为最后一个错误代码ERROR_ALREADY_EXISTS返回,则它知道在当前会话中管道服务器是。 您可以通过ProcessIdToSessionId来获取进程的当前会话号,以便创建名称为管道ID的命名管道服务器。
[DllImport(\"kernel32.dll\",SetLastError=true)]
static extern int ProcessIdToSessionId(int pid, ref int session);
附件: 要获取当前的会话ID,您可以简单地使用Process.GetCurrentProcess()。SessionId而不是上面定义的PInvoke签名。     

要回复问题请先登录注册