2 个 C# 程序如何通过命名管道相互通信。
如果我在具有提升权限的管理员帐户下运行该程序,则一切正常。
我需要使用“本地系统”帐户将此程序作为服务运行,但我无法访问网络。
情况 :
- 服务器:1 个程序在 Windows Server 2012 数据中心上作为服务运行
- 客户端:1 个程序在客户端 Windows 7、8.1 或 10 上作为服务运行
在服务器上
- 我将命名管道的名称放在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters[NullSessionPipes]
重新启动服务 LanmanServer
在服务器程序中,我按如下方式创建管道
PipeSecurity psobj = new PipeSecurity();
psobj.AddAccessRule(new PipeAccessRule("EveryOne", PipeAccessRights.FullControl, AccessControlType.Allow));
NamedPipeServerStream requestpipe = new NamedPipeServerStream(REQUESTPIPENAME, PipeDirection.InOut, numThreads, PipeTransmissionMode.Byte,
PipeOptions.Asynchronous, 2048, 2048, psobj);
在客户端程序中,我连接到命名管道,如下所示:
NamedPipeClientStream pipeClient = new NamedPipeClientStream(SERVER, REQUESTPIPENAME, PipeDirection.InOut, PipeOptions.WriteThrough)
我还模拟了 2 台 Windows 7 机器(1 台物理机和 1 台虚拟机,未桥接)之间的情况。在这里,我尝试了一些选项:
- 网络访问:限制对命名管道和共享的匿名访问 => 禁用
- 网络访问:允许 LocalSystem NULL 会话回退 => 启用
有什么建议么 ?