小编Tee*_*Tee的帖子

进程间通信 - C# 和 C++。访问该路径被拒绝

我有一个 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)

.net c# c++ ipc named-pipes

5
推荐指数
1
解决办法
1905
查看次数

标签 统计

.net ×1

c# ×1

c++ ×1

ipc ×1

named-pipes ×1