gpt4 book ai didi

c# - 限制 NamedPipeServerStream 的范围

转载 作者:行者123 更新时间:2023-12-04 06:23:17 24 4
gpt4 key购买 nike

我想用 NamedPipeServerStream在应用程序的实例之间做一些小的 IPC。但是,如果服务器与客户端位于同一个终端服务器 session 上(如果应用程序在 TS 环境中运行),我只想将它作为目标。
实现此目的的一个想法是使用登录用户的 SID 并将其与管道名称连接起来。悬停 我认为如果用户从两个不同的位置登录,这会产生问题,而且对我来说似乎也不是很整洁。

有没有可能给NamedPipeServerStream它响应调用并设置此范围以便 RDP session 构建边界的范围?或者有人知道如何限制范围/实现所需的行为?

最佳答案

如果您想将其限制为一个 session ,您可以 create本地命名空间中的命名互斥锁以限制其在 session 中的可见性。当客户端想要连接时
它可以创建相同的互斥锁,如果它作为最后一个错误代码 ERROR_ALREADY_EXISTS 返回,它就知道在当前 session 中存在管道服务器。

您可以通过 ProcessIdToSessionId 获取进程的当前 session 号因此您可以创建一个命名管道服务器,其名称中包含 session ID。

[DllImport("kernel32.dll",SetLastError=true)]
static extern int ProcessIdToSessionId(int pid, ref int session);

附录:
要获取您当前的 session ID,您可以简单地使用 Process.GetCurrentProcess().SessionId 而不是上面定义的 PInvoke 签名。

关于c# - 限制 NamedPipeServerStream 的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6315572/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com