如果一个公司打算使用微软的产品来构建自己的办公自动化系统,那么,建议采用主域控制的方式。那么,必然就要用到活动目录(AD),这样,IT部门就需要为公司的每一个员工来创建域帐号。如果公司比较大的话,这是一个很大的工程。而且,我们会发现,有些工作量基本上是在重复劳动,人力资源部为了给It部门提供人员名单,会录入一次人员的各种信息,比如姓名、工号、所属部门、部门领导、电话号码等等,那么,IT人员在拿到这张表后,他又要重新录入一次。并且常常会因为人为的原因导致帐户中出现错误。下面,我们就用C#编写了一个创建帐户的程序。在这个程序中,它不但要创建域帐户,它还会在相应的Exchange中创建相应的邮件帐户。通过这个程序,人力资源部门只需要按照IT部门提供的数据库格式(Access)填写相关项目就可以了。
首先,我们需要定义一些变量:
string strMemberof="";
   string strUserParm="";
   string strManager="";
   string strScriptPath="";
   string strdepartment="";
   string strCompany="";
  // string strAccountExp;
   string defaultNC = "DC=Test,DC=net";  //这是默认的域
   string alias = ""; 
   string fullName = "";
   string password = @"Password";  //这是默认的初始密码
   string domainName = "test.net";
   string strGivenName="";
 
//下面这个变量告诉程序将邮箱建在Exchange的哪个存储区域中
string homeMDB = "CN=Test,CN=控股公司," 
    + "CN=InformationStore,CN=MAIL,CN=Servers,"
    + "CN=First Administrative Group,CN=Administrative Groups,"
    + "CN=test,CN=Microsoft Exchange,CN=Services,"
    + "CN=Configuration,DC=Test,DC=net";
 
label1.Text="开始从模板中加载数据!";
           //获取模板信息
 
我们知道,创建的一批帐户中,有许多的项目是相同的,所以,我们先创建好一个帐户作为模板,然后,通过读取这个模板的数据作为新建的帐户的相应项目的数据。
这段代码采用了Ad的查询对象:
   DirectoryEntry deMb = new DirectoryEntry();
   deMb.Path="LDAP://CN=模板, OU=项目组,OU=部门,DC=Test, DC=net";
     strMemberof=deMb.Properties["memberof"][0].ToString();
   strUserParm=deMb.Properties["UserParameters"][0].ToString();
   strManager=deMb.Properties["manager"][0].ToString();
   strScriptPath=deMb.Properties["scriptPath"][0].ToString();
   strdepartment=deMb.Properties["department"][0].ToString();
   strCompany=deMb.Properties["company"][0].ToString();
  // strAccountExp=deMb.Properties["accountExpires"].Value.ToString();
   deMb.Close();
   label1.Text="加载数据完毕!开始从数据库中读取新建帐户信息!";
   //读取数据库获取帐户信息
   ADODB.Connection objConn;
   ADODB.Command objCmd;
   ADODB.Recordset objRs;
   object objOptParm;
   objOptParm="";
   string str=@"Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Registry Path=;Jet OLEDB:Database Locking Mode=1;Data Source=""db1.mdb"";Mode=Share Deny None;Jet OLEDB:Engine Type=5;Provider=""Microsoft.Jet.OLEDB.4.0"";Jet OLEDB:System database=;Jet OLEDB:SFP=False;persist security info=False;Extended Properties=;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Create System Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;User ID=Admin;Jet OLEDB:Global Bulk Transactions=1";
   objConn=new ADODB.Connection();
   try
   {
    objConn.Open(str,"","",-1);
    
   }
   catch(SystemException ex)
   {
    MessageBox.Show(ex.Message);
    
   }
   finally
   {
    //
   }
   objRs=new ADODB.Recordset();
   objCmd=new ADODB.Command();
   objCmd.CommandText="select * from sheet1";
   objCmd.ActiveConnection=objConn;
   try
   {
    objRs=objCmd.Execute(out objOptParm,ref objOptParm,1);
   }
   catch(SystemException ex)
   {
    objConn.Close();
    MessageBox.Show(ex.Message);
    
    
   }
   finally
   {
    //
   }
   try
   {
    
   //开始创建帐户 
    //MessageBox.Show(objRs.Fields[2].Value.ToString());