3
我的Windows服務使用CreateEvent創建2個事件,以便與用戶應用程序進行通信。 該服務和用戶應用程序不在同一用戶帳戶下運行。 用戶應用程序打開該事件並將其設置爲無錯信號。但該服務從未收到該活動。另一個事件的方向相反。 所以我認爲這些事件錯過了同步化權利。如何在CreateEvent的SDDL字符串中添加同步權
服務:
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
;
感謝您的幫助,
奧利維爾
是的,你說得對。由於syncronization權限不存在SDDL字符串,唯一的解決方案是使用全局十六進制字符串。 – Olivier