Пример #1
0
        NetDeleteGroupMember(
            string servername,
            string groupname,
            string username
            )
        {
            uint result = (uint)LUGAPI.WinError.ERROR_SUCCESS;

            if (String.IsNullOrEmpty(servername))
            {
                servername = null;
            }
            if (String.IsNullOrEmpty(groupname))
            {
                groupname = null;
            }
            if (String.IsNullOrEmpty(username))
            {
                username = null;
            }

            LOCALGROUP_MEMBERS_INFO_3 lgmi_3 = new LOCALGROUP_MEMBERS_INFO_3();
            lgmi_3.lgrmi3_domainandname = username;

            IntPtr bufptr = IntPtr.Zero;
            bufptr = Marshal.AllocHGlobal(Marshal.SizeOf(lgmi_3));

            try
            {
                Marshal.StructureToPtr(lgmi_3, bufptr, false);

                if (!NetApiInitCalled)
                {
                    result = NetApiInit();
                    if (result != (uint)LUGAPI.WinError.ERROR_SUCCESS)
                    {
                        return result;
                    }

                    NetApiInitCalled = true;
                }

                result = (uint)NetLocalGroupDelMembers(servername, groupname, 3, bufptr, 1);
            }
            catch (Exception)
            {
                result = (uint)LUGAPI.WinError.ERROR_EXCEPTION_IN_SERVICE;
            }
            finally
            {
                if (bufptr != IntPtr.Zero)
                {
                    Marshal.DestroyStructure(bufptr, lgmi_3.GetType());
                    Marshal.FreeHGlobal(bufptr);
                }
            }

            return result;
        }