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