请问如果用DELPHI,添加WINDOWS的域用户啊。
或者是WINDOWS添加域用户的时候,我这边动态的获得此域用户信息

解决方案 »

  1.   

    用ADSI,微软的活动目录接口
    我有一个小例子,你看看
    http://download.csdn.net/source/1462183
      

  2.   

    是WINDOWS域 用户的添加哦。不是WINDOWS用户
      

  3.   

    一样,去研究ADSI吧,或者研究注册表,我想这些东西都和注册表有关
      

  4.   

    用dsadd user命令
    我曾写的。不过没有测试。附代码
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Buttons,inifiles,IdStrings,shellapi;type
      TForm1 = class(TForm)
        GroupBox1: TGroupBox;
        Edit1: TEdit;
        Edit2: TEdit;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label5: TLabel;
        Label6: TLabel;
        Label7: TLabel;
        GroupBox2: TGroupBox;
        SpeedButton1: TSpeedButton;
        ComboBox1: TComboBox;
        GroupBox3: TGroupBox;
        GroupBox4: TGroupBox;
        CheckBox1: TCheckBox;
        CheckBox3: TCheckBox;
        CheckBox4: TCheckBox;
        Edit3: TEdit;
        Label8: TLabel;
        Edit4: TEdit;
        SpeedButton2: TSpeedButton;
        SpeedButton3: TSpeedButton;
        SpeedButton4: TSpeedButton;
        Edit5: TEdit;
        SpeedButton5: TSpeedButton;
        Label9: TLabel;
        Edit6: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure SpeedButton1Click(Sender: TObject);
        procedure ComboBox1Change(Sender: TObject);
        procedure SpeedButton2Click(Sender: TObject);
        procedure SpeedButton5Click(Sender: TObject);
        procedure Edit1Change(Sender: TObject);
        procedure SpeedButton3Click(Sender: TObject);
        procedure SpeedButton4Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure cxini;
        procedure creini;
      end;var
      Form1: TForm1;
      path:string;
    implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    {var
     cini:tinifile;
     cst:tstrings; }
    begin
    path:=extractfilepath(paramstr(0))+'config.ini';
    creini;
    cxini;
    {cst:=tstringlist.Create;
    cini:=tinifile.Create(path);
     try
      cini.ReadSection('域名',cst);
      combobox1.Items:=cst;
       if combobox1.Items.Count>0 then
          begin
           combobox1.ItemIndex:=0;
           edit5.Text:=cini.ReadString('域名',combobox1.Text,'没有域名,请先添加');
           end else begin       end;
      finally
       cini.Free;
       cst.Free;
      end;}
      edit4.Text:='@'+edit5.Text;end;procedure TForm1.SpeedButton1Click(Sender: TObject);
    var
    ini:tinifile;
    begin
    ini:=tinifile.Create(path);
     try
       ini.WriteString('域名',combobox1.Text,edit5.Text);
       cxini;
       finally
       ini.Free;
       end;
    end;procedure TForm1.ComboBox1Change(Sender: TObject);
    var
    chini:tinifile;
    begin
    chini:=tinifile.Create(path);
    try
       if combobox1.Text<>'' then
        begin
          edit5.Text:=chini.ReadString('域名',combobox1.Text,'没有域名,请添加')
        end;
     finally
      chini.Free;
     end;
    edit4.Text:=edit1.Text+'@'+edit5.Text;end;procedure TForm1.SpeedButton2Click(Sender: TObject);
    var
    //fi:integer;
    fst:tstrings;
    cmds,oucmd:string;
    begin
    if (edit1.Text='') or (edit3.Text='') or (edit2.Text='') or (edit6.Text='') or (edit5.Text='') then
     begin
      application.MessageBox('不能为空','520os',mb_ok);
      exit;
     end;cmds:='';
    oucmd:='dsadd user ';
    if checkbox1.Checked then cmds:='-pwdneverexpires yes ' else cmds:='-pwdneverexpires no ';
    if checkbox3.Checked then cmds:=cmds+'-disabled yes ' else cmds:=cmds+'-disabled no ';
    if checkbox4.Checked then cmds:=cmds+'-mustchpwd yes ' else cmds:=cmds+'mustchpwd no ';//showmessage(cmds);
    fst:=tstringlist.Create;
    splitcolumns(edit5.Text,fst,'.');
    //showmessage(inttostr(fst.Count));
     case fst.Count of
       2:begin
         oucmd:=oucmd+'CN='+edit1.text+',OU='+edit6.Text+',DC='+fst[0]+',DC='+fst[1]+' '+'-UPN '+edit1.Text+'@'+fst[0]+'.'+fst[1]+' '+'-display '+edit3.Text+' -pwd '+edit2.Text+' '+cmds;
         end;
       3:begin
      oucmd:=oucmd+'CN='+edit1.text+',OU='+edit6.Text+',DC='+fst[0]+',DC='+fst[1]+',DC='+fst[2]+' '+'-UPN '+edit1.Text+'@'+fst[0]+'.'+fst[1]+'.'+fst[2]+' '+'-display '+edit3.Text+' -pwd '+edit2.Text+' '+cmds;
         end;
       4:begin
      oucmd:=oucmd+'CN='+edit1.text+',OU='+edit6.Text+',DC='+fst[0]+',DC='+fst[1]+',DC='+fst[2]+',DC='+fst[3]+' '+'-UPN '+edit1.Text+'@'+fst[0]+'.'+fst[1]+'.'+fst[2]+'.'+fst[3]+' '+'-display '+edit3.Text+' -pwd '+edit2.Text+' '+cmds;
         end;
      end;
    //showmessage(oucmd);
    winexec(pchar(oucmd),0);
    end;procedure TForm1.SpeedButton5Click(Sender: TObject);
    var
    dini:tinifile;
    dsts:tstrings;
    i:integer;
    begin
    dini:=tinifile.Create(path);
    dsts:=tstringlist.Create;
     try
       dini.ReadSection('域名',dsts);
        for i:=0 to dsts.Count-1 do
          begin
            if combobox1.Text=dsts[i] then
              begin
               dini.DeleteKey('域名',dsts[i]);
               cxini;
              end;      end;  finally
      end;
    end;procedure TForm1.cxini;
    var
     cini:tinifile;
     cst:tstrings;
    begincst:=tstringlist.Create;
    cini:=tinifile.Create(path);
     try
      cini.ReadSection('域名',cst);
      combobox1.Items:=cst;
       if combobox1.Items.Count>0 then
          begin
           combobox1.ItemIndex:=0;
           edit5.Text:=cini.ReadString('域名',combobox1.Text,'没有域名,请先添加');
           end else begin       end;
      finally
       cini.Free;
       cst.Free;
      end;
    end;procedure TForm1.Edit1Change(Sender: TObject);
    begin
    edit4.Text:=edit1.Text+'@'+edit5.Text;
    end;procedure TForm1.SpeedButton3Click(Sender: TObject);
    begin
    ShellExecute(Handle,'open','explorer.exe',pchar(path),nil,1);
    end;procedure TForm1.creini;
    var
     ccini:tinifile;
    begin
    if not FileExists(path) then
     begin
      ccini:=tinifile.Create(path);
       try
         ccini.WriteString('域名','1','520os.com');
         ccini.WriteString('批量添加','域名','520os.com');
         ccini.WriteString('批量添加','组织单位','520test');
         ccini.WriteString('帐户','QQ号码','QQ153785587');
        finally
         ccini.Free;
        end; end;
    end;procedure TForm1.SpeedButton4Click(Sender: TObject);
    var
    tini:tinifile;
    tstr,tzf:tstrings;
    ocmd,ou,ym,mm:string;
    ti:integer;
    begin
     tini:=tinifile.Create(path);
     tstr:=tstringlist.Create;
     tzf:=tstringlist.Create;    ou:=tini.ReadString('批量添加','组织单位','520os');
       ym:= tini.ReadString('批量添加','域名','520.com');
       mm:=tini.ReadString('批量添加','密码','abcdefg');
     try   splitcolumns(ym,tstr,'.');
        tini.ReadSection('帐户',tzf);
     case tstr.Count of
       2:begin
         //ocmd:=ocmd+'CN='+edit1.text+',OU='+edit6.Text+',DC='+fst[0]+',DC='+fst[1]+' '+'-UPN '+edit1.Text+'@'+fst[0]+'.'+fst[1]+' '+'-display '+edit3.Text+' -pwd '+edit2.Text+' '+cmds;      for ti:=0 to tzf.Count-1 do
            begin
            ocmd:='dsadd user CN='+tzf[ti]+',OU='+ou+',DC='+tstr[0]+',DC='+tstr[1]+' '+'-UPN '+tzf[ti]+'@'+tstr[0]+'.'+tstr[1]+' '+'-display'+' '+tini.ReadString('帐户',tzf[ti],'')+' '+'-pwd '+mm+' '+'-pwdneverexpires yes';
           // showmessage(ocmd);
            // ocmd:='';
            winexec(pchar(ocmd),0) ;
            end;
         end;
       3:begin
      //ocmd:=ocmd+'CN='+edit1.text+',OU='+edit6.Text+',DC='+fst[0]+',DC='+fst[1]+',DC='+fst[2]+' '+'-UPN '+edit1.Text+'@'+fst[0]+'.'+fst[1]+'.'+fst[2]+' '+'-display '+edit3.Text+' -pwd '+edit2.Text+' '+cmds;
             for ti:=0 to tzf.Count-1 do
            begin
            ocmd:='dsadd user CN='+tzf[ti]+',OU='+ou+',DC='+tstr[0]+',DC='+tstr[1]+',DC='+tstr[2]+' '+'-UPN '+tzf[ti]+'@'+tstr[0]+'.'+tstr[1]+'.'+tstr[2]+' '+'-display'+' '+tini.ReadString('帐户',tzf[ti],'')+' '+'-pwd '+mm+' '+'-pwdneverexpires yes';
           // showmessage(ocmd);
            // ocmd:='';
            winexec(pchar(ocmd),0) ;
            end;     end;
       4:begin
     // ocmd:=ocmd+'CN='+edit1.text+',OU='+edit6.Text+',DC='+fst[0]+',DC='+fst[1]+',DC='+fst[2]+',DC='+fst[3]+' '+'-UPN '+edit1.Text+'@'+fst[0]+'.'+fst[1]+'.'+fst[2]+'.'+fst[3]+' '+'-display '+edit3.Text+' -pwd '+edit2.Text+' '+cmds;
                 for ti:=0 to tzf.Count-1 do
            begin
            ocmd:='dsadd user CN='+tzf[ti]+',OU='+ou+',DC='+tstr[0]+',DC='+tstr[1]+',DC='+tstr[2]+',DC='+tstr[3]+' '+'-UPN '+tzf[ti]+'@'+tstr[0]+'.'+tstr[1]+'.'+tstr[2]+'.'+tstr[3]+' '+'-display'+' '+tini.ReadString('帐户',tzf[ti],'')+' '+'-pwd '+mm+' '+'-pwdneverexpires yes';
            //showmessage(ocmd);
            // ocmd:='';
            winexec(pchar(ocmd),0) ;
            end;     end;
      end;
      finally
        tstr.Free;
        tini.Free;
        tzf.Free;
      end;end;end.
      

  5.   

    支持aa.bb aa.bb.cc aa.bb.cc.dd 支持这样的域名方式