createfile 无权限_windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...
邮槽创建在服务程序内,可以创建成功,
但外部客户端连接时
m_hMailslot = CreateFile("\\\\.\\mailslot\\zdpMailslot",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
GetLastError返回错误 5 ,无权限访问Access Denied
如果路径改为
\\\\*\\mailslot\\zdpMailslot
\\\\compername\\mailslot\\zdpMailslot
则可以连接成功,但是发一条数据服务端就重复接收三次,而且延时巨大(几分钟)。让人费解。
查到了这篇文章解释的:猜测路径不是点的话那么走的远程调用,每次都要建立授权会话,导致延时巨大
http://www.360doc.cn/article/2660674_95457447.html
lpSecurityAttributes参数决定了为邮槽施加的访问控制权限。在Windows NT和Windows2000中,这个参数只实现了一部分,所以同时还应指定一个null(空)参数。在邮槽上,唯一能够施加的安全措施是针对本地I/O进行的----客户机试图将服务器的名字设为小数点(.),以打开一个邮槽。要想绕过这种安全机制,客户机可指定服务器的实际名字,而不是一个小数点,亦即相当于发出一个远程I/O调用。在Windows NT和Windows2000中,并未针对远程I/O而实现lpSecurityAttributes参数,因为假如每次发出一条消息时,都在客户机与服务器之间建立一个授权会话,那么效率会显得十分低下。因此,邮槽仅一部分符合标准文件系统采用的Windows NT和Windows2000安全模型。结果便是,网络中的任何邮槽客户机都可将数据发给服务器。
===搜了半天找到了这个网上的文章====
跨进程访问共享内存的权限问题
http://m.blog.csdn.net/jiangsheng/article/details/25563
采用了蒋老师的CShareRestrictedSD 类指定自定义的SECURITY_ATTRIBUTES,
不知道为啥这个类写的这么复杂
但放到服务程序里CreateMailslot的时候就挂了。
于是放弃
===继续搜了半天找到了这个网上的文章 stackoverflow老外的====
https://stackoverflow.com/questions/8389549/access-denied-on-writing-on-mailslot-in-windows-service-program
给出了一个指定SECURITY_ATTRIBUTES的代码:
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, true, NULL, false);
SECURITY_ATTRIBUTES sa;
sa.lpSecurityDescriptor=&sd;
sa.bInheritHandle=true;pHandleMailSlot = CreateMailslot("your mail slot path", 0, -1, &sa);
弄上果然可以外部连接成功了!!!之前的延时大也是自己调用错了。
createfile 无权限_windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...相关推荐
- windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...
邮槽创建在服务程序内,可以创建成功, 但外部客户端连接时 m_hMailslot = CreateFile("\\\\.\\mailslot\\zdpMailslot",GENER ...
- [Win]进程间通信——邮槽Mailslot
进程间通信 进程的地址空间是私有的.出于安全性的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的,也无法知道内存中保存的数据的意义.但是在一些具体的应用情况下需要多个进行相互配合 ...
- Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题
Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应 ...
- android webview定位权限,混合开发安Android webview使用内置浏览器定位的权限
具体步骤: 一.添加权限: 二.设置webview.setting WebSettings settings = webView.getSettings(); settings.setGeolocat ...
- 进程间通信(6) 邮槽
邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输. 邮槽是一种单向通信机制,创建邮槽的服务器进程读取数据,打开邮槽的客户端写入数据. 邮槽可以实现一对多的单向通信.但是数据量小,通常都 ...
- 《Windows核心编程》---邮槽通信
邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠UDP数据传输协议.使用邮槽通信的进程分为客户端和服务端,邮槽由服务端创建,创建后,客户端可以通过邮槽名打开邮槽,在获得邮槽句柄后可以向邮槽写入消 ...
- 进程间通信 - 邮槽实现
引子 前面的一篇博文介绍了进程之间通信的一种最为简单的方式, 也就是在本地进程之间通过剪贴板来实现进程间通信,而剪贴板自有其缺陷, 很显然的是,剪贴板只能在本地机器上实现, 无法实现本地进程与远程服务 ...
- 进程间通信(7) “剪贴板“、“匿名管道“、“命名管道“、“邮槽“4种方式总结
1. 剪贴板和匿名管道只能同一-台机器上 命名管道和邮槽还可以实现跨网络的进程间通信; 邮槽是基于广播通信的,可以一对多的单向通信, 数据量较小,通常都是在424字节以下 命名管道只能点对点的单一的通 ...
- 【免杀前置课——Windows编程】十、进程间通信(COPY_DATA通信,邮槽通信)、实现两进程通信(附代码)
进程间通信 进程间通信 1.COPY_DATA方式 2.邮槽的方式 实现两进程通信 进程接收端 进程发送端 错误调试小技巧 进程间通信 每个进程都有自己独立的4G内存空间,彼此是不能直接互相访问的.如 ...
最新文章
- 十二张图带你了解 Redis 的数据结构和对象系统
- 纳米孔测序高错误区域恢复率高达99%,肖传乐/刘奕志/王建新等在Nature子刊发表新校正组装算法
- 计算机vb实验报告,VB综合实验报告格式
- 机器人学习--Carnegie Mellon University 认知机器人学课程
- mysql表的类型_浅谈MySQL表类型
- android京东首页轮播代码,web移动端-轮播
- 程序人生:给年轻程序员关于开发过程的10条忠告
- date转timestamp格式_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题
- RTP/RTCP/RTSP
- 为什么年轻人挣得很多还是穷?北上广深挑战指数报告~
- Atitit 人脸识别 眼睛形态 attilax总结 可以按照大小来分类。。或者按照形态来分类 眼睛的类型、分类。包括杏眼,狐狸眼,铜铃眼,龙眼,丹凤眼和小鹿眼等等。 月牙眼 笑起来。。吊梢
- linux查看445端口状态,linux和Windows如何查看端口占用情况
- 化工、食品外贸行业管理难点
- 天刀 服务器状态,12月11日服务器例行维护公告(已完成)
- 录游戏用什么软件,录制游戏视频哪个软件好
- 荣耀9igoogle模式_将您的iGoogle主页导出到另一个帐户
- uni-app在App平台如何实现升级更新?
- matlab潮汐观测数据,潮汐观测方法有哪些?
- 阿里大鱼短信发送接口开发
- 方大九钢携手图扑软件:数字孪生智慧钢厂之数据驾驶舱