Я могу получить локальных пользователей в 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));