c++ - predeterminados - tipos de usuarios en windows server 2012
Buscar usuarios actuales del grupo de directorio activo C++ (1)
¿Cómo voy a consultar sobre a qué grupo de directorios activos pertenece el usuario que ha iniciado sesión actualmente? Estoy asumiendo que será a través de LDAP, pero no he podido encontrar mucho sobre cómo obtener esta información en particular.
He creado un código, pero no estoy muy seguro de lo que tengo que hacer a continuación
// Open the access token associated with the calling process.
if (OpenProcessToken(GetCurrentProcess(),
TOKEN_QUERY,
&hToken) == FALSE)
{
dwErrorCode = GetLastError();
wprintf(L"OpenProcessToken failed. GetLastError returned: %d/n", dwErrorCode);
return HRESULT_FROM_WIN32(dwErrorCode);
}
// Retrieve the token information in a TOKEN_USER structure.
GetTokenInformation(hToken,
TokenUser, // Request for a TOKEN_USER structure.
NULL,
0,
&dwBufferSize);
pTokenUser = (PTOKEN_USER) new BYTE[dwBufferSize];
memset(pTokenUser, 0, dwBufferSize);
if (GetTokenInformation(hToken,
TokenUser,
pTokenUser,
dwBufferSize,
&dwBufferSize))
{
CloseHandle(hToken);
}
else
{
dwErrorCode = GetLastError();
wprintf(L"GetTokenInformation failed. GetLastError returned: %d/n", dwErrorCode);
return HRESULT_FROM_WIN32(dwErrorCode);
}
if (IsValidSid(pTokenUser->User.Sid) == FALSE)
{
wprintf(L"The owner SID is invalid./n");
delete [] pTokenUser;
}
En su caso particular, creo que puede prescindir de cualquier llamada LDAP. Aquí hay una sugerencia:
- use
GetCurrentProcessId
yOpenProcess
para obtener un control del proceso actual - llame a
OpenProcessToken
en ese identificador para abrir el token de acceso asociado con el proceso actual - Llamar a
GetTokenInformation
en ese token de acceso, con una clase de información token deTokenGroups
- la estructura resultante
TOKEN_GROUPS
contiene una lista con los SID y los atributos de todos los grupos en el token de acceso - llame a
LookupAccountSid
en el SID de cada grupo en la lista para obtener su nombre
MSDN debe proporcionar información más detallada sobre las llamadas mencionadas anteriormente.