gpt4 book ai didi

windows - 如何在 CreateEvent 的 SDDL 字符串中添加同步权

转载 作者:可可西里 更新时间:2023-11-01 09:24:56 28 4
gpt4 key购买 nike

我的 Windows 服务使用 CreateEvent 创建了 2 个事件,用于与用户应用程序通信。该服务和用户应用程序未在同一用户帐户下运行。用户应用程序打开事件并将其设置为无错误地发出信号。但是该服务永远不会收到该事件。另一个事件以相反的方向起作用。所以我认为事件没有正确同步。

服务:

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
);

互动应用:

HANDLE EvtCreateNewUserSession = OpenEventW( 
EVENT_MODIFY_STATE | SYNCHRONIZE, // default security attributes
FALSE, // initial state is not signaled
L"Global\\MyEvent" // object name
;

感谢您的帮助,

奥利维尔

最佳答案

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

例如,此 SDDL:D:(A;;0x001F0003;;;BA)(A;;0x00100002;;;AU) 创建 DACL 用于:

- 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 - 字段权限

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.
...

关于windows - 如何在 CreateEvent 的 SDDL 字符串中添加同步权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19049412/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com