关于windows下高低权限的管道通信问题
2021/6/14 7:26:08
本文主要是介绍关于windows下高低权限的管道通信问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
今天在编程时遇到一个问题
我需要两个不同的进程之间通信,随后去查找了资料.找到了管道通信的方式.便去尝试.
实验的时候一切正常.但当服务端在管理员状态运行时便无法连接了.
查看连接的错误代码,是"拒绝访问"便将连接端也放在了管理员下运行,成功.
随后又不停的找资料.发现创建管道的函数"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下高低权限的管道通信问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南