首页 | 源码下载 | 网站模板 | 网页特效 | 广告代码 | 网页素材 | 字体下载 | 书库 | 站长工具
会员投稿 投稿指南 RSS订阅
当前位置:主页>网络编程>java教程>资讯:Java访问windows活动目录(2)

Java访问windows活动目录(2)

www.jz123.cn  2010-04-09   来源:   中国建站    责任编辑(袁袁)    我要投递新闻


// 获取域信息
  procedure TMainFrm.GetDomainInformation(Domain: IADsContainer);
  var
  Enum: IEnumVariant;
  ADsTempObj: OLEVariant;
  ADsObj: IADs;
  Value: LongWord;
  begin
  //清空用户、组和计算机列表
  UserListView.Items.Clear;
  GroupListView.Items.Clear;
  ComputerListView.Items.Clear;
  //获取枚举对象,并赋值给 Enum 变量
  Enum := (Domain._NewEnum) as IEnumVariant;
  //利用枚举对象查找,把每个子对象赋值给临时的 OLEVariant 对象
  while (Enum.Next(1, ADsTempObj, Value) = S_OK) do
  begin
  ADsObj := IUnknown(ADsTempObj) as IADs; //获得临时对象:OLEVariant 变量赋值给 ADSI 对象
  if AdsObj.Class_ = 'User' then //如果是用户对象
  AddUserToList(ADsObj);
  if AdsObj.Class_ = 'Group' then //如果是组对象
  AddGroupToList(ADsObj);
  if AdsObj.Class_ = 'Computer' then //如果是计算机对象
  AddComputerToList(ADsObj);
  ADsTempObj:=Null; //释放OLEVariant
  end;
  end;
  procedure TMainFrm.AddUserToList(ADsObj:IADs);
  var aListItem:TListItem;
  begin
  aListItem:=UserListView.Items.Add;
  aListItem.Caption:=ADsObj.Name;
  aListItem.SubItems.Add(ADsObj.Class_);
  aListItem.SubItems.Add(ADsObj.ADsPath);
  aListItem.SubItems.Add(ADsObj.Parent);
  // aListItem.SubItems.Add(ADsObj.Get('sAMAccountName'));
  end;
  procedure TMainFrm.AddGroupToList(ADsObj:IADs);
  var aListItem:TListItem;
  begin
  aListItem:=GroupListView.Items.Add;
  aListItem.Caption:=ADsObj.Name;
  aListItem.SubItems.Add(ADsObj.Class_);
  aListItem.SubItems.Add(ADsObj.ADsPath);
  end;
  procedure TMainFrm.AddComputerToList(ADsObj:IADs);
  var aListItem:TListItem;
  begin
  aListItem:=ComputerListView.Items.Add;
  aListItem.Caption:=ADsObj.Name;
  aListItem.SubItems.Add(ADsObj.Class_);
  aListItem.SubItems.Add(ADsObj.ADsPath);
  end;
  procedure TMainFrm.btn1Click(Sender: TObject);
  var
  UnknownObject: IUnknown;
  DomainPath,ADUser,ADPass: WideString;
  Domain: IADsContainer;
  begin
  // 指定域路径
  DomainPath := 'WinNT://' + ADSIDomainName.Text;
  ADUser:= ADSIUsername.Text;
  ADPass:= ADSIPassword.Text;
  DomainPath := 'WinNT://Hebmc.com';
  ADUser: ADUser:= 'HebmcOAWebUser'; //注意用户名称的写法:domainUser 或 User@domain.com
  ADUser:= 'OAWebUser@Hebmc.com'; //注意用户名称的写法:domainUser 或 User@domain.com
  ADPass:= 'chenzuooaup02';
  // 如果使用用户登录了信息
  if cbUseLogin.Checked then // 使用用户登录的信息创建域对象
  OleCheck(AdsOpenObject(PWideChar(DomainPath),
  PWideChar(ADUser),
  PWideChar(ADPass),
  0,
  IID_IADsContainer,
  UnknownObject))
  else
  OleCheck(ADsGetObject(PWideChar(DomainPath),
  IID_IADsContainer,
  UnknownObject));
  // 设定域对象
  Domain := UnknownObject as IADsContainer;
  // 从域中获得信息列表
  GetDomainInformation(Domain);
  end;
  end.

上一篇:Java访问windows活动目录(1) 下一篇:Java main方法如何弄清进程问题

评论总数:0 [ 查看全部 ] 网友评论


关于我们隐私版权广告服务友情链接联系我们网站地图