栏目导航
热点推荐
- 三十条有用的 Java 编程规则
- Java制作水印图片源码
- Java常见异常及可能的导致原因
- Java中的修饰词使用方法总结
- J2EE系统异常的处理准则
- Java中的异常、断言、日志解析(
- Java面试技巧:Java面试题集锦(
- 面向Java开发人员的Scala指南:
- Java程序员:一刻钟精通正则表达
- 网友经验分享:学好java开发的关
- 专家解答:创建表格与数据库进行
- Java远程访问Domino数据库
阅览排行
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. |
0
上一篇:Java访问windows活动目录(1) 下一篇:Java main方法如何弄清进程问题