0

我可以使用以下代码在 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));
4

0 回答 0