ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

关于windows下高低权限的管道通信问题

2021-06-13 15:06:00  阅读:240  来源: 互联网

标签:windows pSD PIPE DESCRIPTOR 管道 sa 权限 SECURITY


今天在编程时遇到一个问题

我需要两个不同的进程之间通信,随后去查找了资料.找到了管道通信的方式.便去尝试.
实验的时候一切正常.但当服务端在管理员状态运行时便无法连接了.
查看连接的错误代码,是"拒绝访问"便将连接端也放在了管理员下运行,成功.
随后又不停的找资料.发现创建管道的函数"CreateNamedPipe"其中的最后一个参数lpSecurityAttributes 是用来设置管道安全性的:更改安全性的代码如下

	//创建一个安全性对象
    SECURITY_ATTRIBUTES sa;
    //管道句柄
    HANDLE hPipe;
    //
    PSECURITY_DESCRIPTOR pSD = NULL;


    pSD = (PSECURITY_DESCRIPTOR)LocalAlloc(LPTR,
        SECURITY_DESCRIPTOR_MIN_LENGTH);
    if (NULL == pSD)
    {
    	
    }
    
    if (!InitializeSecurityDescriptor(pSD,
        SECURITY_DESCRIPTOR_REVISION))
    {
    	
    }
    
    if (!SetSecurityDescriptorDacl(pSD,
        TRUE,     // bDaclPresent flag   
        NULL,		//将安全性设为最低
        FALSE))   // not a default DACL 
    {
    	
    }

    sa.nLength = sizeof(SECURITY_ATTRIBUTES);
    sa.lpSecurityDescriptor = pSD;
    sa.bInheritHandle = FALSE;


    hPipe = CreateNamedPipe(L"\\\\.\\Pipe\\mypipe", PIPE_ACCESS_DUPLEX , PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE | PIPE_WAIT , PIPE_UNLIMITED_INSTANCES, 0, 0, NMPWAIT_WAIT_FOREVER, &sa);

参考文章:
1.https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createnamedpipea
2.https://docs.microsoft.com/en-us/windows/win32/api/securitybaseapi/nf-securitybaseapi-setsecuritydescriptordacl
3.https://www.cnblogs.com/BoyXiao/archive/2011/01/02/1924188.html

标签:windows,pSD,PIPE,DESCRIPTOR,管道,sa,权限,SECURITY
来源: https://blog.csdn.net/stars_under/article/details/117876882

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有