Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.220.81.106] |
|
Сообщ.
#1
,
|
|
|
Всем привет!
Хочу создать event в сервисе (т.е. из-под пользователя SYSTEM) и открыть его для установки (SetEvent) в юзере/администраторе. Как это можно сделать? Разумеется, если создать event в сервисе обычным образом, то в юзере/админе его открыть не получится. |
Сообщ.
#2
,
|
|
|
Нашёл вот тут: CreateEvent и NtCreateEvent
Чуть переоформил: var SA: TSecurityAttributes; SD: TSecurityDescriptor; H: THandle; begin // Создаем дескриптор безопасности if InitializeSecurityDescriptor(@SD, SECURITY_DESCRIPTOR_REVISION) and // DACL не установлен, объект не защищён SetSecurityDescriptorDacl(@SD, True, nil, False) then begin // Настраиваем атрибуты безопасности, передавая указатель на дескриптор безопасности SA.nLength := SizeOf(SA); SA.lpSecurityDescriptor := @SD; SA.bInheritHandle := False; // Создаём событие H := CreateEvent(@SA, True, False, 'Global\MyTestEvent'); end; ... После создания такого объекта его можно спокойно открыть кем угодно хоть с EVENT_ALL_ACCESS |