博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

运用API操作系统用户

Posted on 2007-02-08 14:48  余墨  阅读(301)  评论(1)    收藏  举报

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 新增用户
        
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

        
        
删除用户

        
修改用户

        
修改用户密码

        
获得用户列表

        
识别用户组的关系

        
AlertError

    }
4.参考文章
http://www.csharphelp.com/archives2/archive439.html