有关试用API获取所有用户信息的例子

1.首先引用


using System.Runtime.InteropServices;2.html代码
<HTML>
    <HEAD>
        <title>WebForm3</title>
        <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
        <meta name="CODE_LANGUAGE" Content="C#">
        <meta name="vs_defaultClientScript" content="JavaScript">
        <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <asp:Button id="Button1" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px" runat="server"
                Text="添加用户"></asp:Button>
            <asp:Button id="Button2" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 64px" runat="server"
                Text="删除用户"></asp:Button>
            <asp:Button id="Button3" style="Z-INDEX: 103; LEFT: 16px; POSITION: absolute; TOP: 112px" runat="server"
                Text="修改用户"></asp:Button>
            <asp:Button id="Button4" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 152px" runat="server"
                Text="修改用户密码"></asp:Button>
            <asp:Button id="Button5" style="Z-INDEX: 105; LEFT: 16px; POSITION: absolute; TOP: 216px" runat="server"
                Text="获得用户列表"></asp:Button>
            <asp:Button id="Button6" style="Z-INDEX: 106; LEFT: 16px; POSITION: absolute; TOP: 264px" runat="server"
                Text="识别用户组的关系"></asp:Button>
        </form>
    </body>
</HTML>3.cs代码
public class WebForm3 : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button Button2;
        protected System.Web.UI.WebControls.Button Button3;
        protected System.Web.UI.WebControls.Button Button4;
        protected System.Web.UI.WebControls.Button Button5;
        protected System.Web.UI.WebControls.Button Button6;
        protected System.Web.UI.WebControls.Button Button1;
        //新增用户
        [DllImport("Netapi32.dll")]
        public static extern  int NetUserAdd([MarshalAs(UnmanagedType.LPWStr)] string servername, int level, ref USER_INFO_1 buf, int parm_err);
        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
        public struct USER_INFO_1
        {
            public string usri1_name; 
            public string usri1_password; 
            public int usri1_password_age; 
            public int usri1_priv; 
            public string usri1_home_dir; 
            public string comment; 
            public int usri1_flags; 
            public string usri1_script_path;
        }
        //删除用户
        [DllImport("Netapi32.dll")]
        public static extern int NetUserDel([MarshalAs(UnmanagedType.LPWStr)] string servername, [MarshalAs(UnmanagedType.LPWStr)] string username);
        //修改用户
        [DllImport("Netapi32.dll")]
        public static extern int NetUserGetInfo([MarshalAs(UnmanagedType.LPWStr)] string servername,[MarshalAs(UnmanagedType.LPWStr)] string username,int level,out IntPtr bufptr);
        [DllImport("Netapi32.dll")]
        public static extern int NetUserSetInfo([MarshalAs(UnmanagedType.LPWStr)] string servername,[MarshalAs(UnmanagedType.LPWStr)] string username,int level,ref USER_INFO_1 buf, int error);
        //修改用户密码
        [DllImport("Netapi32.dll")]
        public static extern int NetUserChangePassword([MarshalAs(UnmanagedType.LPWStr)] string domainname,[MarshalAs(UnmanagedType.LPWStr)] string username,[MarshalAs(UnmanagedType.LPWStr)] string oldpassword,[MarshalAs(UnmanagedType.LPWStr)] string newpassword);
        //获得用户列表
        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
        public struct USER_INFO_0
        {
            public String Username;
        } 
        [DllImport("Netapi32.dll")]
        extern static int NetUserEnum([MarshalAs(UnmanagedType.LPWStr)] string servername, int level, int filter, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries, out int resume_handle);
        [DllImport("Netapi32.dll")]
        extern static int NetApiBufferFree(IntPtr Buffer);
        
        //识别用户组的关系
        [StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
        public struct LOCALGROUP_USERS_INFO_0
        {
            public string groupname;
        }
 
        [DllImport("Netapi32.dll")]
        public extern static int NetUserGetLocalGroups([MarshalAs(UnmanagedType.LPWStr)] string servername,[MarshalAs(UnmanagedType.LPWStr)] string username, int level, int flags, out IntPtr bufptr, int prefmaxlen, out int entriesread, out int totalentries);
        private void Page_Load(object sender, System.EventArgs e)
        {
            // Put user code to initialize the page here
        }

        Web Form Designer generated code#region Web Form Designer generated code
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: This call is required by the ASP.NET Web Form Designer.
            //
            InitializeComponent();
            base.OnInit(e);
        }
       
        /** <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {   
            this.Button1.Click += new System.EventHandler(this.Button1_Click);
            this.Button2.Click += new System.EventHandler(this.Button2_Click);
            this.Button3.Click += new System.EventHandler(this.Button3_Click);
            this.Button4.Click += new System.EventHandler(this.Button4_Click);
            this.Button5.Click += new System.EventHandler(this.Button5_Click);
            this.Button6.Click += new System.EventHandler(this.Button6_Click);
            this.Load += new System.EventHandler(this.Page_Load);

        }
        #endregion

        新增用户#region 新增用户
        private void Button1_Click(object sender, System.EventArgs e)
        {
            USER_INFO_1 NewUser = new USER_INFO_1(); // Create an new instance of the USER_INFO_1 struct
 
            NewUser.usri1_name = "UserTestOne"; // Allocates the username
            NewUser.usri1_password = "password"; // allocates the password
            NewUser.usri1_priv = 1; // Sets the account type to USER_PRIV_USER
            NewUser.usri1_home_dir = null; // We didn't supply a Home Directory
            NewUser.comment = "My First User Made through C#"; // Comment on the User
            NewUser.usri1_script_path = null; // We didn't supply a Logon Script Path
 
            if(NetUserAdd(null ,1 ,ref NewUser, 0)!=0) // If the call fails we get a non-zero value
            {
                AlertError("Error Adding User");
            }
        }

        #endregion
       
        删除用户#region 删除用户
        private void Button2_Click(object sender, System.EventArgs e)
        {
            if(NetUserDel(null ,"UserTestOne")!=0) // If the call fails we get a non-zero value
            {
                string script="<script language='javascript'>alert('Error Removing User')</script>";
                Page.RegisterStartupScript("meng",script);
            } 

        }

        #endregion

        修改用户#region 修改用户
        private void Button3_Click(object sender, System.EventArgs e)
        {
            IntPtr bufPtr;
            USER_INFO_1 User = new USER_INFO_1();
            if(NetUserGetInfo(null, "Administrator",1,out bufPtr)!=0)
            {
                AlertError("Error Getting User Info");
            }
            User = (USER_INFO_1)Marshal.PtrToStructure(bufPtr, typeof(USER_INFO_1)); 
            AlertError("Users Name: " + User.usri1_name + " Users Comments: " + User.comment + " Users Privilege Level: " + User.usri1_priv);

            USER_INFO_1 Update = new USER_INFO_1();
            Update.comment = "This is Our C# Updated Comment";
            Update.usri1_priv = 2; // Note that this can only be obtained programmatically using NetUserGetInfo
            if(NetUserSetInfo(null, "UserTestOne",1,ref Update,0)!=0)
            {
                AlertError("Error Setting User Info");
            }

        }

        #endregion

        修改用户密码#region 修改用户密码
        private void Button4_Click(object sender, System.EventArgs e)
        {
            if(NetUserChangePassword(null, "UserTestOne", "password", "ournewpassword")!=0)
            {
                AlertError("Error Changing User Password");
            }

        }
        #endregion

        获得用户列表#region 获得用户列表
        private void Button5_Click(object sender, System.EventArgs e)
        {
            int EntriesRead;
            int TotalEntries;
            int Resume;
            IntPtr bufPtr;
 
            NetUserEnum(null, 0, 2, out bufPtr, -1, out EntriesRead, out TotalEntries, out Resume);
 
            if(EntriesRead> 0)
            {
                USER_INFO_0[] Users = new USER_INFO_0[EntriesRead];
                IntPtr iter = bufPtr;
                for(int i=0; i < EntriesRead; i++)
                {
                    Users[i] = (USER_INFO_0)Marshal.PtrToStructure(iter, typeof(USER_INFO_0)); 
                    iter = (IntPtr)((int)iter + Marshal.SizeOf(typeof(USER_INFO_0)));
                    Response.Write(Users[i].Username);
                }
                //NetworkAPI.NetApiBufferFree(bufPtr);
            }

        }

        #endregion

        识别用户组的关系#region 识别用户组的关系
        private void Button6_Click(object sender, System.EventArgs e)
        {
            int EntriesRead;
            int TotalEntries;
            IntPtr bufPtr;
 
            NetUserGetLocalGroups(null, "Administrator",0,0,out bufPtr,1024,out EntriesRead, out TotalEntries);
 
            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)));
                    Response.Write(RetGroups[i].groupname);
                }
                NetApiBufferFree(bufPtr);
            }
        }
       
        #endregion

        AlertError#region AlertError
        private void AlertError(string msg)
        {
            string script = "<script language='javascript'>";
            script +=" alert('" + msg +"');";
            script +="</script>";
            Page.RegisterClientScriptBlock("Alert", script);
        }
        #endregion

    }

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值