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

但外部客户端连接时

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)的问题...相关推荐

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

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

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

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

  3. Android6.0动态申请权限那些坑--以及避免用户选择不再提示后无法获取权限的问题

    Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应 ...

  4. android webview定位权限,混合开发安Android webview使用内置浏览器定位的权限

    具体步骤: 一.添加权限: 二.设置webview.setting WebSettings settings = webView.getSettings(); settings.setGeolocat ...

  5. 进程间通信(6) 邮槽

    邮槽是基于广播通信体系设计出来的,它采用无连接的不可靠的数据传输. 邮槽是一种单向通信机制,创建邮槽的服务器进程读取数据,打开邮槽的客户端写入数据. 邮槽可以实现一对多的单向通信.但是数据量小,通常都 ...

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

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

  7. 进程间通信 - 邮槽实现

    引子 前面的一篇博文介绍了进程之间通信的一种最为简单的方式, 也就是在本地进程之间通过剪贴板来实现进程间通信,而剪贴板自有其缺陷, 很显然的是,剪贴板只能在本地机器上实现, 无法实现本地进程与远程服务 ...

  8. 进程间通信(7) “剪贴板“、“匿名管道“、“命名管道“、“邮槽“4种方式总结

    1. 剪贴板和匿名管道只能同一-台机器上 命名管道和邮槽还可以实现跨网络的进程间通信; 邮槽是基于广播通信的,可以一对多的单向通信, 数据量较小,通常都是在424字节以下 命名管道只能点对点的单一的通 ...

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

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

最新文章

  1. 十二张图带你了解 Redis 的数据结构和对象系统
  2. 纳米孔测序高错误区域恢复率高达99%,肖传乐/刘奕志/王建新等在Nature子刊发表新校正组装算法
  3. 计算机vb实验报告,VB综合实验报告格式
  4. 机器人学习--Carnegie Mellon University 认知机器人学课程
  5. mysql表的类型_浅谈MySQL表类型
  6. android京东首页轮播代码,web移动端-轮播
  7. 程序人生:给年轻程序员关于开发过程的10条忠告
  8. date转timestamp格式_技术分享 | MySQL:timestamp 时区转换导致 CPU %sys 高的问题
  9. RTP/RTCP/RTSP
  10. 为什么年轻人挣得很多还是穷?北上广深挑战指数报告~
  11. Atitit 人脸识别 眼睛形态 attilax总结 可以按照大小来分类。。或者按照形态来分类 眼睛的类型、分类。包括杏眼,狐狸眼,铜铃眼,龙眼,丹凤眼和小鹿眼等等。 月牙眼 笑起来。。吊梢
  12. linux查看445端口状态,linux和Windows如何查看端口占用情况
  13. 化工、食品外贸行业管理难点
  14. 天刀 服务器状态,12月11日服务器例行维护公告(已完成)
  15. 录游戏用什么软件,录制游戏视频哪个软件好
  16. 荣耀9igoogle模式_将您的iGoogle主页导出到另一个帐户
  17. uni-app在App平台如何实现升级更新?
  18. matlab潮汐观测数据,潮汐观测方法有哪些?
  19. 阿里大鱼短信发送接口开发
  20. 方大九钢携手图扑软件:数字孪生智慧钢厂之数据驾驶舱

热门文章

  1. SSM毕业设计管理系统
  2. 如何用3ds Max和Corona创建羊毛地毯。
  3. python读写文件越来越慢
  4. 霍金逝世一周年,英国皇家铸币厂发售“黑洞”纪念币
  5. FPGA入门学习笔记(二)Vivado设计38译码器
  6. 解决ie8前端兼容问题
  7. Selenium的下载
  8. Javascript 基础知识学习
  9. js 四舍五入方法,重写js四舍五入方法
  10. 扩展欧几里得算法证明及代码