Как получить информацию о пользователях локальных групп из Windows Server 2012 R2? - PullRequest
0 голосов
/ 13 февраля 2019

Я могу получить локальных пользователей в Windows 7, используя приведенный ниже код.Но когда я пробую тот же код на сервере Windows 2012, он не работает.Пожалуйста, помогите с решением.

private static String[] GetUserLocalGroups(string ServerName, string Username, int Flags)
{
    List<String> myList = new List<String>();
    int EntriesRead;
    int TotalEntries;
    IntPtr bufPtr;

    int nErrorCode = NetUserGetLocalGroups(ServerName, Username, 0, Flags, out bufPtr, 1024, out EntriesRead, out TotalEntries);
    if (nErrorCode != 0)
    {
        String errmsg = DllImportsCommon.GetErrorMessage(nErrorCode);
        throw new Exception(errmsg);
    }

    if (EntriesRead > 0)
    {
        LOCALGROUP_USERS_INFO_0[] RetGroups = new LOCALGROUP_USERS_INFO_0[EntriesRead];
        IntPtr iter = bufPtr;
        for (int i = 0; i < EntriesRead; i++)
        {
            RetGroups[i] = (LOCALGROUP_USERS_INFO_0)Marshal.PtrToStructure(iter, typeof(LOCALGROUP_USERS_INFO_0));
            iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(LOCALGROUP_USERS_INFO_0)));
            myList.Add(RetGroups[i].name);
        }
        NetApiBufferFree(bufPtr);
    }
    return myList.ToArray();
}

Ошибка в следующей строке:

RetGroups[i] = (LOCALGROUP_USERS_INFO_0)Marshal.PtrToStructure(iter, typeof(LOCALGROUP_USERS_INFO_0));
...