ADSI-活动目录的问题大家帮帮忙!
我现在想在asp中获得系统中的用户以及其所在的用户组,请大家给我相应的代码,不胜感激!是否能够获得用户的权限,如果可以,也请附上相应的代码!最好可以加上注释,因为我对adsi很陌生,刚刚接受一个新项目,或者发到我的信箱,baggio785@21cn.com
The following Visual Basic code snippet shows how the property methods of IADsContainer can be used.
Dim cont As IADsContainer
Dim usr As IADsUser
Set cont = GetObject("LDAP://OU=Sales, DC=Fabrikam, DC=COM")
cont.Hints = Array("adminDescription") ' Load only this attribute (optional)
Debug.Print cont.Get("adminDescription")
'We want only users.
cont.Filter = Array("user")
For Each usr In cont
Debug.Print usr.Name
Next
下面是我写的使用delphi访问活动目录,取得用户所在的组,使用vb更简单,只需去用户的memberof属性即可,返回值是数组!
procedure TForm1.Button1Click(Sender: TObject);
var
usr:IADsUser;
str1,str2,str3:widestring;
ole1 :oleVariant;
strArray : Tstrings;
i,pos1,pos2 :integer;
begin
try
usr := GetObject('LDAP://NMCMMT.IBMSYS.nmc.ln.cmcc/CN=hello,CN=Users,DC=IBMSYS,DC=nmc,DC=ln,DC=cmcc') as IADsUser;
strArray := TstringList.Create ;
str1 :=usr.FullName ;
str2 := 'memberOf' ;
ole1 :=usr.Get(str2);
pos1 := VarArrayLowBound(ole1,1);
pos2 := VarArrayHighBound(ole1,1);
for i:=pos1 to pos2 do
begin
showmessage(ole1[i])
end;
Except
showmessage('error')
end;
showmessage(str1);
end;
function TForm1.GetObject(const Name:string):Idispatch;
var
Moniker:IMoniker;
Eaten:integer;
BindContext:IBindCtx;
Dispatch:IDispatch;
begin
OleCheck(CreateBindCtx(0,BindContext));
OleCheck(MkParseDisplayName(BindContext,PWideChar(WideString(Name)),Eaten,Moniker));
OleCheck(Moniker.BindToObject(BindContext,Nil,Idispatch,Dispatch));
Result:=Dispatch;
end;
在windows中,用户对于不同的资源,拥有不同的权限.所以,我们通常所说的权限---在windows中,叫ACL(Access Control Lists),严格说是和资源存放在一起的,构成了资源对象,而不是和用户对象存放在一起的.
所以,要取得用户对于windows系统的所有资源的权限几乎是不可能的.通常,你需要什么权限,就去读取该特定权限.(windows也是这样控制用户权限的:在用户访问某一个资源时,检查该用户对于资源的ace,决定是否允许访问)
所以不知道你是要获得用户对于什么资源的权限?
如果是要获取用户对于文件系统中某一个文件的权限,需要的话可以找给你!
当然,用vc或者其他编程方法实现应该也并不难,MSDN中有这方面的例子.