Функция 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

См. также раздел

CreatePrivateObjectSecurity

GetKernelObjectSecurity

GetPrivateObjectSecurity

Низкоуровневые контроль доступа

Функции контроль доступа низкого уровня

SECURITY_DESCRIPTOR

SECURITY_INFORMATION

SetUserObjectSecurity