正文

运用API操作系统用户2007-07-24 13:03:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tiay/27821.html

分享到:

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     }

阅读(3221) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册