邮槽创建在服务程序内,可以创建成功,

但外部客户端连接时

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老外的====

“Access Denied” on writing on Mailslot in Windows Service program

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);

弄上果然可以外部连接成功了!!!之前的延时大也是自己调用错了。

转载于:https://www.cnblogs.com/coolzdp/p/7392504.html

windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...相关推荐

  1. createfile 无权限_windows 邮槽mailslot 在服务程序内建立后客户端无权限访问(GetLastError() == 5)的问题...

    邮槽创建在服务程序内,可以创建成功, 但外部客户端连接时 m_hMailslot = CreateFile("\\\\.\\mailslot\\zdpMailslot",GENER ...

  2. [Win]进程间通信——邮槽Mailslot

    进程间通信 进程的地址空间是私有的.出于安全性的目的,如果一个进程不具有特殊的权限,是无法访问另外一个进程的内存空间的,也无法知道内存中保存的数据的意义.但是在一些具体的应用情况下需要多个进行相互配合 ...

  3. Windows server 2008文件服务器之一隐藏用户无权限访问的共享文件夹

    Windows server 2008文件服务器之一隐藏用户无权限访问的共享文件夹 话说在windows server 2003 SP1可以从微软获得一个插件得到这样一个实用的功能:让用户没有权限访问 ...

  4. 虚拟机内 docker启动 局域网无发访问 问题解决

    虚拟机内 docker启动 局域网无发访问 问题解决 参考文章: (1)虚拟机内 docker启动 局域网无发访问 问题解决 (2)https://www.cnblogs.com/Pualfly/p/ ...

  5. Windows访问Samba提示“无权限访问”问题解决

    在Centos7下完成Samba服务器配置后,一切都按照如下链接设置,只是将自己的共享路径修改 path=/home/share时,Windows访问总是提示"无权限访问". 自己 ...

  6. Windows10局域网内共享资源(你没有权限访问 或者 账号或者密码错误)

    如果想要配置Windows资源共享文件,可以访问下面链接.结合本篇一起看~ [解决方案]Windows10局域网内配置文件夹共享(附网络中没有找到的情况解决方案) 遇到了两个问题 账号或者密码错误 你 ...

  7. 《Windows核心编程》---邮槽通信

    邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠UDP数据传输协议.使用邮槽通信的进程分为客户端和服务端,邮槽由服务端创建,创建后,客户端可以通过邮槽名打开邮槽,在获得邮槽句柄后可以向邮槽写入消 ...

  8. 【免杀前置课——Windows编程】十、进程间通信(COPY_DATA通信,邮槽通信)、实现两进程通信(附代码)

    进程间通信 进程间通信 1.COPY_DATA方式 2.邮槽的方式 实现两进程通信 进程接收端 进程发送端 错误调试小技巧 进程间通信 每个进程都有自己独立的4G内存空间,彼此是不能直接互相访问的.如 ...

  9. 局域网内建立共享硬盘服务器(基于windows共享硬盘,ubuntu可访问)

    局域网内建立共享硬盘服务器 Author: 杭州电子科技大学-自动化学院-智能系统和机器人研究中心-Jolen Xie 一.Windows连接Windows的共享硬盘服务器 1. 打开电脑共享功能 首 ...

最新文章

  1. 机器学习——推荐算法
  2. Linux下window转unix文件格式
  3. VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)
  4. C++ vector使用示例
  5. Android6.0之AMS启动
  6. 适合初学者 :用Google map street view api 实现批量下载谷歌地图街景 in python
  7. STM8L建立IAR工程
  8. px和毫米的换算_px与mm换算(px换成mm)
  9. 雷曼兄弟 算法_雷曼如何失去双腿
  10. 九月亲测可运营【付费视频奖励计划赞助视频付费计划】最新版本的视频奖励源代码带有订阅可扣除金额带有代理新UI ...
  11. vue延迟渲染组件_Vue 动态组件渲染问题分析
  12. 在不借助第三方变量情况下实现两个变量的交换(借助于异或运算)
  13. 情景剧《重走长征路》上演
  14. vmware 15.5.1 ubuntu 16.04 罗技无线鼠标 滚轮不能用
  15. 现代远程教育入学指南(石油大学)--入学篇---在线考试
  16. 数字化园区三维可视化管理系统软件解决方案
  17. 苏州服务器渠道销售额,国内排名第二!华为确定卖掉X86服务器业务,或由苏州国资委接盘...
  18. JavaWeb学习-案例练习-图书管理前台-10- 图书详情页的实现
  19. 预约上门系统软件小程序app如何搭建
  20. python文字游戏-逃离海岛

热门文章

  1. 使用PyTorch进行手写数字识别,在20 k参数中获得99.5%的精度。
  2. 第一次申请信用卡额度太低,怎么办?
  3. “魅力足球,艺术中国”2007中国艺术精英展
  4. 互联网产品初期需求确定与数据库模型设计——基于Visio和Xmind
  5. 安卓创建快捷方式相关问题 Intent Intent-filter
  6. Java面向对象入门
  7. rabbitmq怎样确认是否已经消费了消息_阿里Java研发二面:了解RabbitMQ?说说RabbitMQ可靠性投递...
  8. php命令执行无法重定向输出,php – CodeIgniter 3重定向功能无法正常工作
  9. 求平方根sqrt()函数的底层算法效率问题
  10. 【caffe-Windows】添加工程-以classification为例