如何使用非空LPSECURITY_ATTRIBUTES参数的CreateEvent

时间:2014-10-06 21:51:13

标签: c++ winapi events

我有一个尝试使用以下方法打开事件的进程-1

LPCWSTR a = L"ShellReadyEvent";
HANDLE hEvent = OpenEvent ( EVENT_ALL_ACCESS , 0, a );

我正在尝试在后台创建一个可以更改访问权限的进程 甚至是。

我正在尝试使用以下方法在进程-2下使用create事件:

HANDLE hEvent = CreateEvent ( 0 , 1 , 1 , a );

我想将lpEventAttributes(第一个参数)替换为阻止第一个进程但没有运气和想法的东西?

1 个答案:

答案 0 :(得分:1)

使用与进程-2不同的用户帐户运行进程-1,然后进程-2可以创建拒绝访问该用户的SECURITY_DESCRIPTOR,并使用{{3}将其传递给CreateEvent()结构。

要实际创建SECURITY_DESCRIPTOR,您可以:

  1. 使用SECURITY_ATTRIBUTESInitializeAcl()创建一个拒绝进程1的用户帐户SID的ACL。使用AddAccessDeniedAce()或相关功能获取用户的SID。使用LookupAccountName()InitializeSecurityDescriptor()创建使用ACL的SetSecurityDescriptorDacl()

  2. 使用SECURITY_DESCRIPTOR从描述ACL中所需内容的字符串创建SECURITY_DESCRIPTOR。请参阅此示例:ConvertStringSecurityDescriptorToSecurityDescriptor()