小编vin*_*ent的帖子

IPC:UWP C# 管道客户端在连接 C++ 服务器时失败

我正在尝试使用 NamedPipe 在 Win10 中的应用程序和服务之间进行通信。APP是用C#(UWP)开发的,前台作为Pipe Client运行。服务是 C++ 运行后台作为管道服务器。现在的问题是APP无法连接服务。我知道 MSFT 文档说管道仅在应用程序容器中受支持。但我尝试了以下情况:我的 uwp 应用程序 VS C#(nonUWP) 服务器(不在应用程序容器中);C++ 客户端 VS C++ 服务器(与服务相同的代码,除了在前台运行)。两种情况都可以正常工作。所以我认为它的安全权限可能有问题。但是我找不到任何异常,有人可以帮助我吗?

客户端(UWP/C#):

_namedPipeClientHandle[index] = CreateFileW(@"\\.\pipe\starpipe",
                            DESIREDACCESS.GENERIC_READ | DESIREDACCESS.GENERIC_WRITE,
                            SHAREMODE.FILE_SHARE_READ | SHAREMODE.FILE_SHARE_WRITE,
                            0,
                            CREATIONDISPOSITION.OPEN_EXISTING,
                            FLAGSANDATTRIBUTES.FILE_FLAG_OVERLAPPED,
                            0);
                    if (_namedPipeClientHandle[index] != null && _namedPipeClientHandle[index].IsInvalid == false)
                    {
                        _namedPipeClientStream[index] = new FileStream(_namedPipeClientHandle[index], FileAccess.ReadWrite, 2048, true);
                        isConnected[index] = true;
                        break;
                    }
Run Code Online (Sandbox Code Playgroud)

服务器(C++):

    EXPLICIT_ACCESS ea[2];
    SID_IDENTIFIER_AUTHORITY SIDAuthWorld = SECURITY_WORLD_SID_AUTHORITY;
    SID_IDENTIFIER_AUTHORITY SIDAuthNT = SECURITY_NT_AUTHORITY;
    SECURITY_ATTRIBUTES sa;

    if (!AllocateAndInitializeSid(&SIDAuthWorld, 1, SECURITY_WORLD_RID, 0, 0, 0, 0, 0, 0, 0, &pEveryoneSID)) return …
Run Code Online (Sandbox Code Playgroud)

c# c++ ipc pipe uwp

0
推荐指数
1
解决办法
708
查看次数

标签 统计

c# ×1

c++ ×1

ipc ×1

pipe ×1

uwp ×1