首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在CreateEvent的SDDL字符串中添加同步

如何在CreateEvent的SDDL字符串中添加同步
EN

Stack Overflow用户
提问于 2013-09-27 11:17:50
回答 1查看 975关注 0票数 5

我的Windows用CreateEvent创建两个事件,以便与用户应用程序通信。服务和用户应用程序不在同一个用户帐户下运行。用户应用程序打开事件并将其设置为无错误信号。但是这个活动从来没有被服务部门接收过。另一个事件则相反。所以我认为这些事件错过了同步化的权利。

服务:

代码语言:javascript
运行
复制
SECURITY_ATTRIBUTES security;
ZeroMemory(&security, sizeof(security));
security.nLength = sizeof(security);
ConvertStringSecurityDescriptorToSecurityDescriptor(L"D:P(A;OICI;GA;;;SY)(A;OICI;GA;;;BA)(A;OICI;GWGR;;;IU)", SDDL_REVISION_1, &security.lpSecurityDescriptor, NULL);
EvtCreateNewUserSession = CreateEventW( 
            &security,       // security attributes
            TRUE,       // manual-reset event
            FALSE,      // initial state is not signaled
            L"Global\\MyEvent"      // object name 
            );

交互式应用程序:

代码语言:javascript
运行
复制
HANDLE EvtCreateNewUserSession = OpenEventW( 
EVENT_MODIFY_STATE | SYNCHRONIZE,       // default security attributes
FALSE,      // initial state is not signaled
L"Global\\MyEvent"      // object name 
;

谢谢你的帮忙,

奥利维尔

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-22 11:03:40

不要使用“string权限”(如GA),而是使用0xXXXXXXXX格式(您可以组合标志,然后将它们转换为十六进制)。

例如,这个SDDL:D:(A;;0x001F0003;;;BA)(A;;0x00100002;;;AU)为:

代码语言:javascript
运行
复制
- BA=Administrators, 0x001F0003=EVENT_ALL_ACCESS (LocalSystem and LocalService are in Administrators group, but NetworkService is not)
- AU=Authenticated Users, 0x00100002=SYNCHRONIZE | EVENT_MODIFY_STATE

http://msdn.microsoft.com/en-us/library/windows/desktop/aa374928(v=vs.85).aspx - field rights

代码语言:javascript
运行
复制
A string that indicates the access rights controlled by the ACE.
This string can be a hexadecimal string representation of the access rights, 
such as "0x7800003F", or it can be a concatenation of the following strings. 
...
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19049412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档