usuarios usuario tipos predeterminados permisos locales grupos dominio delegar dar administrador active c++ ldap activedirectorymembership

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 y OpenProcess 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 de TokenGroups
  • 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.