我想要实现的目标: 我想将我的申请实例计算到固定数字。 如果应用程序的更多实例启动,它应该只作为“查看器”
她是示例应用程序的代码
问题: 如果只从一个用户启动所有进程,它工作正常 但是如果我和其他用户一起启动应用程序,我会收到安全性异常! (不允许访问)
有人可以指出我正确的方向,增强文档有点缺乏这个主题;-)
必须设置哪些权限才能允许其他每个登录用户访问?
答案 0 :(得分:3)
我找到了解决方案
Boost的文档看起来并不坏: - / http://www.boost.org/doc/libs/1_47_0/doc/html/boost/interprocess/permissions.html
只需传递权限并将其设置为“不受限制”
boost::interprocess::permissions permtest;
permtest.set_unrestricted();
_getch();
boost::interprocess::named_semaphore
the_semphore(boost::interprocess::open_or_create,"test_semaphore",3,permtest);
答案 1 :(得分:2)
不幸的是,boost使用信号量的默认安全属性,无法更改它。使用来自MFC的ATL::CSemaphore
或CSemaphore
,甚至来自WinApi的CreateSemaphore
,并构建允许每个人访问的安全描述符。
答案 2 :(得分:1)
我不是Windows专家,所以我不能用心告诉你答案,但你需要知道如何实现named_semaphores(参见“一些基本解释”的boost.interprocess文档)然后查找此资源的权限策略以授予系统范围的访问权限。因此,请阅读boost.named_semaphore代码,如果他们使用文件,请更新该文件的权限,如果他们使用系统调用,请阅读该系统调用的Windows API文档。