Функция GetGPOListA (userenv.h)
Функция GetGPOList извлекает список объектов групповой политики для указанного пользователя или компьютера. Эта функция может вызываться двумя способами: во-первых, можно использовать маркер для пользователя или компьютера, а во-вторых, можно использовать имя пользователя или компьютера и имя контроллера домена.
Синтаксис
USERENVAPI BOOL GetGPOListA(
[in] HANDLE hToken,
[in] LPCSTR lpName,
[in] LPCSTR lpHostName,
[in] LPCSTR lpComputerName,
[in] DWORD dwFlags,
[out] PGROUP_POLICY_OBJECTA *pGPOList
);
Параметры
[in] hToken
Маркер для пользователя или компьютера, возвращенный
Если этот параметр NULL, необходимо указать значения для параметров lpName и lpHostName.
[in] lpName
Указатель на имя пользователя или компьютера в полном формате различающегося имени (например, "CN=
Если параметр hToken
[in] lpHostName
Dns-имя домена (предпочтительное) или доменное имя контроллера домена. Имя контроллера домена можно получить с помощью функции DsGetDcName, указав DS_DIRECTORY_SERVICE_REQUIRED в параметре флагов.
Если параметр hToken
[in] lpComputerName
Указатель на имя компьютера, используемого для определения расположения сайта. Формат имени — "\\computer_name". Если этот параметр значение NULL, используется имя локального компьютера.
[in] dwFlags
Значение, указывающее дополнительные флаги, используемые для управления получением информации. Если указать GPO_LIST_FLAG_MACHINE, функция получает сведения о политике для компьютера. Если не указать GPO_LIST_FLAG_MACHINE, функция извлекает сведения о политике для пользователя.
Если указать GPO_LIST_FLAG_SITEONLY функция возвращает только сведения о сайте для компьютера или пользователя.
[out] pGPOList
Указатель, который получает список структур групповой политики. Дополнительные сведения см. в GROUP_POLICY_OBJECT.
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение ненулевое.
Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.
Замечания
Функция GetGPOList
Вызов этой функции с маркером предоставляет самый точный список. Система может выполнять проверку доступа для пользователя или компьютера. Вызов этой функции с именем пользователя или компьютера и именем контроллера домена быстрее, чем вызов его маркером. Однако если маркер не указан, система использует доступ к вызывающей системе безопасности, что означает, что список может быть не полностью правильным для предполагаемого пользователя или компьютера.
Чтобы получить самый точный список объектов групповой политики для компьютера при вызове GetGPOList, вызывающий объект должен иметь доступ на чтение к каждому подразделению и сайту в домене компьютера, а также чтение и применение доступа к групповой политике ко всем объектам групповой политики, связанным с сайтами, доменами или подразделениями этого домена. Пример вызывающего объекта — служба, запущенная на компьютере, имя которого указано в параметре lpName. Альтернативный метод получения списка объектов групповой политики будет вызывать метод RsopCreateSession класса RsopPlanningModeProvider WMI. Этот метод может создавать результирующих данных политики для учетной записи компьютера или пользователя в гипотетическом сценарии.
Вызовите функцию FreeGPOList, чтобы освободить список групповой политики после завершения обработки.
Как правило, следует вызывать GetGPOList маркером при получении списка объектов групповой политики для пользователя, как показано в следующем примере кода.
LPGROUP_POLICY_OBJECT pGPOList;
if (GetGPOList (hToken, NULL, NULL, NULL, 0, &pGPOList))
{
// Perform processing here.
//
// Free the GPO list when you finish processing.
FreeGPOList (pGPOList);
}
Как правило, чтобы получить список объектов групповой политики для компьютера, можно вызвать GetGPOList с именем компьютера и именем контроллера домена, как показано в следующем фрагменте кода.
LPGROUP_POLICY_OBJECT pGPOList;
if (GetGPOList (NULL, lpMachineName, lpHostName, lpMachineName, GPO_LIST_FLAG_MACHINE, &pGPOList))
{
// Perform processing here.
//
// Free the GPO list when you finish processing.
FreeGPOList (pGPOList);
}
Чтобы получить список объектов групповой политики, примененных для определенного пользователя или компьютера и расширения, вызовите функцию GetAppliedGPOList.
Заметка
Заголовок userenv.h определяет GetGPOList в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista |
минимальный поддерживаемый сервер | Windows Server 2008 |
целевая платформа | Виндоус |
заголовка | userenv.h |
библиотеки |
Userenv.lib |
DLL | Userenv.dll |