Что будет сообщать о разрешениях учетной записи? - PullRequest
1 голос
/ 18 августа 2010

Моя сервисная программа выполняет еще один экземпляр, по сути, CreateProcess(GetCommandLine()). Затем дочерний процесс использует OpenProcess, чтобы получить дескриптор своего родительского процесса (чтобы он мог определить, когда родительский процесс прекратился). Для некоторых клиентов OpenProcess завершается с ERROR_ACCESS_DENIED. Я пытаюсь определить причину и воспроизвести обстоятельства для внутреннего тестирования.

Я хочу, чтобы что-то, что я мог отправить клиентам (или программу, или инструкции по использованию программ, которые уже обычно установлены на серверах Windows), чтобы они запустили и сгенерировали отчет, который включает учетную запись, под которой работает служба, и какие привилегии, которые аккаунт и его группы были предоставлены или отклонены. Как я могу получить эту информацию от клиентов?

1 Ответ

0 голосов
/ 19 августа 2010

Получить имя учетной записи легко - GetUserName.Получение прав, назначенных этой учетной записи, немного больше.Если память служит, последовательность выполняется примерно так:

GetKernelObjectSecurity(Current_oject, &security_descriptor)
GetSecurityDescriptorDacl(security_descriptor, &dacl)
GetEffectiveRightsFromAcl(dacl, user_name, &rights)

Вы можете предпочесть использовать GetExplicitEntriesFromAcl для этого последнего шага.Со всем этим есть одна проблема: если они слишком сильно ограничивают пользователя, некоторые (или все) из этого могут также потерпеть неудачу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...