Функция GetUserObjectSecurity (winuser.h)
Функция GetUserObjectSecurity извлекает сведения о безопасности для указанного объекта пользователя.
Синтаксис
BOOL GetUserObjectSecurity(
[in] HANDLE hObj,
[in] PSECURITY_INFORMATION pSIRequested,
[in, out, optional] PSECURITY_DESCRIPTOR pSID,
[in] DWORD nLength,
[out] LPDWORD lpnLengthNeeded
);
Параметры
[in] hObj
Дескриптор объекта пользователя, для которого возвращаются сведения о безопасности.
[in] pSIRequested
Указатель на значение SECURITY_INFORMATION , указывающее запрашиваемые сведения о безопасности.
[in, out, optional] pSID
Указатель на структуру SECURITY_DESCRIPTOR в относительном формате, который содержит запрошенные сведения при возврате функции. Этот буфер должен быть выровнен по 4-байтовой границе.
[in] nLength
Длина (в байтах) буфера, на который указывает параметр pSD .
[out] lpnLengthNeeded
Указатель на переменную для получения количества байтов, необходимых для хранения полного дескриптора безопасности. Если значение этой переменной больше значения параметра nLength при возврате функции, функция возвращает значение FALSE и ни один дескриптор безопасности не копируется в буфер. В противном случае копируется весь дескриптор безопасности.
Возвращаемое значение
Если функция выполнена успешно, функция возвращает ненулевое значение.
Если функция завершается сбоем, она возвращает ноль. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Чтобы прочитать список управления доступом владельца, группы или списка управления доступом (DACL) из дескриптора безопасности объекта пользователя, вызывающему процессу должен быть предоставлен READ_CONTROL доступ при открытии дескриптора.
Чтобы считывать список управления доступом системы (SACL) из дескриптора безопасности, вызывающему процессу должен быть предоставлен ACCESS_SYSTEM_SECURITY доступ при открытии дескриптора. Правильный способ получить этот доступ — включить привилегию SE_SECURITY_NAME в текущем маркере вызывающего объекта, открыть дескриптор для ACCESS_SYSTEM_SECURITY доступа, а затем отключить привилегию.
Примеры
Пример использования этой функции см. в разделе Запуск интерактивного клиентского процесса.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winuser.h (включая Windows.h) |
Библиотека | User32.lib |
DLL | User32.dll |
См. также раздел
Низкоуровневые контроль доступа