Hello group,
Trying to get a list of groups, including nested groups, for an account.
Anyone see any problem with this code? It is returing a LOT of 122
ERROR_INSUFFICIENT_BUFFER errors.
ArrayList alGroups = new ArrayList();
int bufferSize = 1024;
int groupLength = bufferSize;
int domainLength = bufferSize;
int sidNameUse= 0;
int errorReturn;
StringBuilder group;
StringBuilder domain;
string[] props = {"tokenGroups"};
_de.RefreshCache(props);
foreach(byte[] sid in _de.Properties["tokenGroups"])
{
IntPtr sidPtr = Marshal.AllocHGlobal(sid.Length);
Marshal.Copy(sid, 0, sidPtr, sid.Length);
group = new StringBuilder(bufferSize);
domain = new StringBuilder(bufferSize);
errorReturn = LookupAccountSid(null, sidPtr, group, ref groupLength,
domain, ref domainLength, out sidNameUse);
if(errorReturn == 0)
group = new StringBuilder("Error: " + Marshal.GetLastWin32Error());
alGroups.Add(group);
Marshal.FreeHGlobal(sidPtr);
}
_groups = alGroups;
I have tried multiple buffer lengths... nothing seems to work. I am also
getting a ERROR_NONE_MAPPED error once as well.
TIA,
Jason S.