我的 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
;
谢谢你的帮助,
奥利维尔