У меня есть пользователь DOMAIN\User.Name
, который соответствует whoami /GROUPS
в более чем 200 группах доменов Windows.
Когда я пытаюсь определить все группы для этого пользователя, используя функцию WinAPI :: NetUserGetLocalGroups ()Я получаю только 27 групп для указанного пользователя:
#include <windows.h>
#include <lm.h>
#include <string>
int main()
{
//query the domain server for the groups of the user
LPGROUP_USERS_INFO_0 pBuf = NULL;
DWORD dwLevel = 0;
DWORD dwPrefMaxLen = MAX_PREFERRED_LENGTH;
DWORD dwEntriesRead = 0;
DWORD dwTotalEntries = 0;
NET_API_STATUS nStatus = MAX_NERR;
std::wstring serverName(L"\\\\MyDomainNameDns");
std::wstring userName(L"DOMAIN\\user.name");
nStatus = ::NetUserGetLocalGroups(serverName.c_str(),
userName.c_str(),
dwLevel,
LG_INCLUDE_INDIRECT,
reinterpret_cast<PBYTE*>(&pBuf),
dwPrefMaxLen,
&dwEntriesRead,
&dwTotalEntries);
}
dwTotalEntries
- это 27, а nStatus
- это 0, поэтому я не выбираю только часть всех групп.Также я попытался использовать ::NetUserGetGroups()
вместо этого, но безуспешно.
ПРИМЕЧАНИЕ. Использование функциональности .NET System.Security.Principal.WindowsIdentity.GetCurrent().Groups
действительно дает мне все группы.
В чем может быть причина, по которой NetUserGetLocalGroups этого не делаетвернуть получить все группы как whoami
или .NET / WindowsIdentity
?В чем может быть разница между возвращенными / не возвращенными группами?