Я пишу службу Windows, которая выполняет операции в соответствии с различными правилами, одна из которых основана на запрашивающем идентификаторе пользователя.Найти, если данный идентификатор SID принадлежит к группе, идентифицированной SID
Таким образом, он получает запрашивающий идентификатор пользователя SID и затем сравнивает его со своим внутренним списком идентификаторов безопасности, чтобы решить, какую операцию он будет выполнять. Использование функции API EqualSID
делает это очень простым.
Однако теперь я столкнулся с ситуацией, когда некоторые идентификаторы SID в списке услуг являются идентификаторами группы, а не идентификаторами SID пользователя.
Это означает, что я должен найти способ проверить, соответствует ли полученный SID тому, который указан в списке, или принадлежит группе, которая представлена SID в списке.
Я осмотрелся, чтобы узнать, какие API-интерфейсы будут доступны и что будет найдено около CheckTokenMembership
, для чего требуется маркер маркера. Вот где я немного потерялся, потому что, поскольку служба не обязательно находится на одной машине, я не могу найти способ создать правильный дескриптор маркера из SID, который я получил.
Служба сама работает под учетной записью «Служба NT» по умолчанию, и я предпочел бы, чтобы она оставалась таким образом.
Какой API вы бы предложили использовать?
Целевой язык Delphi, но я могу понять примеры в простом C.