我有一个 C# 客户端应用程序,它使用 Pipes 连接到 C++ 服务器应用程序。当我尝试连接时,出现错误:System.UnauthorizedAccessException:对路径的访问被拒绝。
查找后,我发现可以通过创建 PipeSecurity 对象并添加 PipeAccessRule 来修复它。但这仅在服务器也是 C# 应用程序时才有效。
如果我将服务器作为 C++ 应用程序,知道如何解决此访问问题吗?
我已经搜索过但找不到解决方案。
C#:
int timeOut = 500;
NamedPipeClientStream pipeStream = new NamedPipeClientStream(".", pipeName, PipeDirection.Out, PipeOptions.Asynchronous);
pipeStream.Connect(timeOut);
byte[] buffer = Encoding.UTF8.GetBytes(sendStr);
pipeStream.BeginWrite(buffer, 0, buffer.Length, new AsyncCallback(AsyncSend), pipeStream);
Run Code Online (Sandbox Code Playgroud)
C++:
_hPipe = ::CreateNamedPipe(configurePipeName(getPipeName()).c_str(),
PIPE_ACCESS_DUPLEX | FILE_FLAG_FIRST_PIPE_INSTANCE | FILE_FLAG_OVERLAPPED,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS,
1,
bufferSize,
bufferSize,
NMPWAIT_USE_DEFAULT_WAIT,
NULL);
if (_hPipe == INVALID_HANDLE_VALUE)
{
logStream << "CreateNamedPipe failed for " << sys::OperatingSystem::getLastErrorMessage() << blog::over;
return; …Run Code Online (Sandbox Code Playgroud)