Exemple #1
0
        public static Boolean IsAdmin(string sGroup, string sUsername)
        {
            IntPtr groupInfoPtr, currentStructPtr = IntPtr.Zero;
            int    entriesRead  = 0;
            int    totalEntries = 0;
            int    ret          = NetLocalGroupGetMembers(null, sGroup, 2, out groupInfoPtr, -1, out entriesRead, out totalEntries, IntPtr.Zero);

            if (ret == 0)
            {
                LOCALGROUP_MEMBERS_INFO_1[] sMembers = new LOCALGROUP_MEMBERS_INFO_1[entriesRead];
                IntPtr iterPtr = groupInfoPtr;
                //string[] sSplit = new string[entriesRead];
                for (int i = 0; i < entriesRead; i++)
                {
                    sMembers[i] = (LOCALGROUP_MEMBERS_INFO_1)Marshal.PtrToStructure(iterPtr, typeof(LOCALGROUP_MEMBERS_INFO_1));
                    iterPtr     = (IntPtr)((int)iterPtr + Marshal.SizeOf(typeof(LOCALGROUP_MEMBERS_INFO_1)));
                    //if (sMembers[i].sName.Contains(sUsername))
                    //sSplit[i] = sMembers[i].sName.Split('\\')[1];
                    //if(string.Equals(sSplit[i], sUsername, StringComparison.CurrentCultureIgnoreCase))
                    if (string.Equals(sMembers[i].sName.Split('\\')[1], sUsername, StringComparison.CurrentCultureIgnoreCase))
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
Exemple #2
0
 internal static extern NET_API_STATUS NetLocalGroupGetMembers(
     string servername,
     string localgroupname,
     int level,
     ref LOCALGROUP_MEMBERS_INFO_1 bufptr,
     int prefmaxlen,
     ref int entriesread,
     ref int totalentries,
     ref IntPtr resumehandle);