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 }