相关疑难解决方法(0)

如何在服务和用户进程之间共享内存?

我有一组Win32应用程序,它们使用CreateFileMapping() 和创建的共享内存段共享信息MapViewOfFile().其中一个应用是系统服务; 其余部分由登录用户启动.在Windows XP上,没有问题.我们将我们的片段命名为"Global\Something",一切都很好.

Vista中的额外安全性(以及假设的Windows 7)似乎阻止了这种架构的运行.不允许普通用户在全局命名空间中创建(Win32错误5)对象.MSDN表明,如果该帐户具有"创建全局"权限,那么一切都应该很好,但实际上似乎并非如此.此外,Vista的"完整性"功能似乎可以防止"低完整性"用户进程访问"高完整性"服务创建的共享内存对象.看起来我应该能够通过一些神奇的SetSecurityDescriptorSacl()咒语解决这个问题,但是我很难学会说话.

所以问题是:在服务和普通用户进程之间使用共享内存段的正确方法什么?

为了取代"只是关闭UAC"的简单回答,我们处于一个相当封闭的环境中,这是不可能的.

编辑:服务和用户进程都需要对段进行读/写访问.

c security winapi windows-vista

7
推荐指数
1
解决办法
8995
查看次数

标签 统计

c ×1

security ×1

winapi ×1

windows-vista ×1