关于win7进程间共享数据问题

红烧肉 2011-12-23 11:27:56
在xp系统上,进程间共享数据比较容易,直接的CreateFileMapping(),OpenFileMapping(),MapViewofFile()几个API就好,基本不需要考虑权限的问题,但是在vista之后,这个方法就不灵验了。

A Remote Desktop Services server has multiple namespaces for the following named kernel objects: events, semaphores, mutexes, waitable timers, file-mapping objects, and job objects. There is a global namespace used primarily by services in client/server applications. In addition, each client session has a separate namespace for these objects, such as in Windows Vista.

这一段是从msdn摘过来的。
我现在想问的问题是,win7上面有没有什么办法,普通用户(非管理员用户)进程能不能实现进程间数据共享,msdn上提倡用一个服务程序调用CreateFileMapping(),客户应用程序就可以访问这个handle,但是我现在的是两个程序都是application程序。

有哪位大侠可以帮助小弟实现win7 2个应用程序(非管理员权限运行)共享内存数据。

我想实在不行就文件共享算了。纠结啊。
...全文
215 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
红烧肉 2011-12-23
  • 打赏
  • 举报
回复
依旧没有人,吃饭,回来继续。同志们,吃饭重要。
红烧肉 2011-12-23
  • 打赏
  • 举报
回复
使用 "Local\\MyFileMappingObjectName"

4楼的方法确实可以满足我的要求,现在运行起来是正常的。我就纠结了,win7 是说app可能运行在不同的session,这个session是一个什么概念呢。只多用户同时登陆,每个用户都有一个session呢?还是指其他的什么?
Saleayas 2011-12-23
  • 打赏
  • 举报
回复
很奇怪了,你既然是用户权限。
怎么能够期望创建 Global Object 呢?
红烧肉 2011-12-23
  • 打赏
  • 举报
回复
又多了2位回复者,谢谢了,上一次问题也是oyljerry回答的。意思是对与创建这些内核对象的时候,如果用户没有足够的权限是无法创建Global的内核对象的。无法绕开,那么这样,用户是不是就不能像win xp win2000一样方便使用进程共享数据了。那如果有这样的需求,微软有没有提供这套方法呢?
oyljerry 2011-12-23
  • 打赏
  • 举报
回复
共享内存对创建者加强了安全控制,你这个没法绕过。要么就用进程外COM组件等。
Saleayas 2011-12-23
  • 打赏
  • 举报
回复
使用 "Local\\MyFileMappingObjectName"
红烧肉 2011-12-23
  • 打赏
  • 举报
回复
谢谢楼上的,用socket其实也不好,有点浪费,而且把原版简单的问题搞得复杂了。
chayedanwc 2011-12-23
  • 打赏
  • 举报
回复
用SOCKET吧。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧