这是一个我改写的判断一个用户是否属于某个组的方法,可以用来参考~
Function userInGroup(username, groupname)
Dim sessionObj
Dim queryObj
Dim filterObj
Dim resultSetObj
' Initial
userInGroup = False
Set sessionObj = GetSession()
' start building a query of the users
Set queryObj = sessionObj.BuildQuery("users")
' have the query return the desired field of the user object(s)
queryObj.BuildField ("login_name")
' filter for members of group groupname (whatever group you want)
Set filterObj = queryObj.BuildFilterOperator(AD_BOOL_OP_AND)
filterObj.BuildFilter "groups", AD_COMP_OP_EQ, groupname
Set resultSetObj = sessionObj.BuildResultSet(queryObj)
' run it
resultSetObj.Execute
Do While resultSetObj.MoveNext = AD_SUCCESS
If username = resultSetObj.GetColumnValue(1) Then
userInGroup = Ture
End If
Loop
End Function
或--
Function userInGroup(username, groupname)
Dim sessionObj
Dim sqlString
set sessionObj = GetSession
' Create a SQL string to find all records and display
sqlString = "select distinct T1.dbid,T1.login_name from" &_
" ( ( users T1 LEFT OUTER JOIN [select * from parent_child_links where parent_fielddef_id = 16777310 ]. " &_
"AS T4mm ON T1.dbid = T4mm.parent_dbid ) LEFT OUTER JOIN groups T4 ON T4mm.child_dbid = T4.dbid ) " &_
"where T1.dbid <> 0 and T1.login_name = " & username &_
" and (T4.name = " & groupname & ")"
set resultSetObj = sessionObj.BuildSQLQuery(sqlString)
resultSetObj.Execute
Do While resultSetObj.MoveNext = AD_SUCCESS
userInGroup = Ture
Loop
End Function
[ 本帖最后由 yunshan 于 2007-1-10 14:54 编辑 ]