如何验证用户是否属于本地组?

zgxbliss 2003-12-29 09:10:48
请问怎么验证某个域用户是否属于本地的administrators组?
...全文
41 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zgxbliss 2003-12-31
  • 打赏
  • 举报
回复
非常感谢.原来需要检查member的adspath属性值.我对CK_MemberInGroup函数稍作了一点修改.如下:
Function CK_MemberInGroup(S_Member,S_Group)
CK_MemberInGroup="F"
sDomainName = "127.0.0.1"
On Error Resume Next
Set Group = GetObject("WinNT://" & sDomainName & "/" & S_Group & ",Group" )
if Err.number<>0 then
exit function
end if
For Each Member in Group.members
If Member.Class <> "Group" Then
if Member.adspath=S_Member then
CK_MemberInGroup="T"
exit function
end if
end if
Next
End Function
MsgBox(ck_memberingroup("WinNT://domain/user","administrators"))
cdsh123 2003-12-31
  • 打赏
  • 举报
回复
楼上的太帅了,很好的代码
yonghengdizhen 2003-12-31
  • 打赏
  • 举报
回复
检查域用户是否被包含在特定组只需要使用该用户完整的ads路径
yonghengdizhen 2003-12-31
  • 打赏
  • 举报
回复
下面的代码就是检查用户是否被包含在指定的组中
<%
sGroupName = "PkGroup"
sDomainName = "Kenfilszwin2k"
Function CK_MemberInGroup(S_Member,S_Group)
CK_MemberInGroup="F"
On Error Resume Next
Set Group = GetObject("WinNT://" & sDomainName & "/" & sGroupName & ",Group" )
if Err.number<>0 then
exit function
end if
For Each Member in Group.members
If Member.Class <> "Group" Then
if member.name=S_Member then
CK_MemberInGroup="T"
exit function
end if
end if
Next
End Function
response.write ck_memberingroup("benny","pkgroup")
%>
yonghengdizhen 2003-12-31
  • 打赏
  • 举报
回复
下面这段代码把sDomainName 定义为你的机名获得的就是本地组用户
<%
Dim sCurrentGroup
Dim sDomainName
sCurrentGroup = Request.QueryString("Group")
sDomainName = Request.QueryString("Domain")

'Change the following line so that sDomainName is
'your machine name or domain name
If sDomainName = "" Then
'sDomainName = "Kenfilszwin2k"
sDomainName = "Kenfilce_server"
end if
%>
<P>Exploring the Domain <%=sDomainName%></P>
<form name="frmGroupSelector" action="UserGroupBrowser.asp" method="GET">
<input type="hidden" name="Domain" value="<%=sDomainName%>">
<%=ListGroups(sDomainName, sCurrentGroup, "submitFrm()")%>
</form>

<%
If sCurrentGroup <> "" Then
Response.Write ListUsers(sDomainName, sCurrentGroup)
End if
%>

<script language="JavaScript"><!--
function submitFrm() {

if (document.frmGroupSelector.Group.options[document.frmGroupSelector.Group.selectedIndex].value != '')
{

document.frmGroupSelector.submit();

}

}
//--></script>



<%
'function to create a select list containing a list of groups within a computer
'or domain. Function must be supplied with three arguments:
'sDomainName: The domain name or computer name
'sSelectedGroup: The name of the group that should have the selected attribute
'sOnChangeScript: The name of the JavaScript function that should be executed
' when the onChange event is triggered for this select list
Function ListGroups(sDomainName, sSelectedGroup, sOnChangeScript)

Dim sSelectListHTML
Dim sGroupName

sSelectListHTML = "<select name=""Group"" id=""Group"" "
sSelectListHTML = sSelectListHTML & "onChange=""" & sOnChangeScript & """>" & vbCRLF
sSelectListHTML = sSelectListHTML & "<option value="""">---------------"
sSelectListHTML = sSelectListHTML & "Select a group"
sSelectListHTML = sSelectListHTML & "---------------</option>" & vbCRLF

Set Domain = GetObject("WinNT://" & sDomainName)

For Each Member in Domain
If Member.Class = "Group" Then
sGroupName = null
sGroupName = Member.Name

If sGroupName = sSelectedGroup Then

sSelectListHTML = sSelectListHTML & "<option selected value=""" & sGroupName & """>"
sSelectListHTML = sSelectListHTML & sGroupName & "</option>" & vbCRLF

Else

sSelectListHTML = sSelectListHTML & "<option value="""
sSelectListHTML = sSelectListHTML & sGroupName & """>" & sGroupName & "</option>" & vbCRLF

End If

End if
Next

sSelectListHTML = sSelectListHTML + "</select>" & vbCRLF

ListGroups = sSelectListHTML

End Function
%>
<%
'function to list the users and groups within a specific user group.
'Function must be supplied with two arguments:
'sDomainName: The domain name or computer name
'sGroupName: The name of the user group
Function ListUsers(sDomainName, sGroupName)

Dim sUserList
Dim sMyParent

Set Group = GetObject("WinNT://" & sDomainName & "/" & sGroupName)

For Each Member in Group.Members

On Error Resume Next

sMyParent = Member.Parent
sMyParent = Right(sMyParent, Len(sMyParent) - InStrRev(sMyParent, "/"))

If Member.Class = "User" Then

sUserList = sUserList & "<b>" & Member.Name & "</b><br>"
sUserList = sUserList & " Full Name: " & Member.FullName & "<br>"
sUserList = sUserList & " Description: " & Member.Description & "<br>"
sUserList = sUserList & " Account Disabled: " & Member.AccountDisabled & "<br>"
sUserList = sUserList & "<p>"

ElseIf Member.Class = "Group" Then

sUserList = sUserList & "<b><a href=""UserGroupBrowser.asp?"
sUserList = sUserList & "Group=" & Server.URLEncode(Member.Name)
sUserList = sUserList & "&Domain=" & Server.URLEncode(sMyParent)
sUserList = sUserList & """>" & Member.Name & "</a></b>< br>"
sUserList = sUserList & " Description: " & Member.Description & "<br>"
sUserList = sUserList & "<p>"

End If

Next

If sUserList = "" Then
sUserList = "<p>This group does not contain any users</p>"
End If

ListUsers = sUserList

End Function
%>
zgxbliss 2003-12-31
  • 打赏
  • 举报
回复
to yonghengdizhen(等季节一过,繁花就凋落):
你说的对,之前我也调查过,一直没找到LDAP方式访问本地组的方法,WinNT方式虽然可以访问本地组,但是取出来的组成员只列出了用户帐号,没有域信息.所以过来问问大家有没有什么解决方法或是思路.
美丽心情 2003-12-31
  • 打赏
  • 举报
回复
关注,那个是VB和C的,难道ASP也有这样的功能吗??

关注,做个记号
yonghengdizhen 2003-12-31
  • 打赏
  • 举报
回复
to zgxbliss(星)
你该仔细看看msdn,不要动不动就发问,要学会举一反三
hackate 2003-12-30
  • 打赏
  • 举报
回复
cmd shu ru

net localgroup administrators

zgxbliss 2003-12-30
  • 打赏
  • 举报
回复
这样取出来的组只是域中的组,不包含本地组啊.
yonghengdizhen 2003-12-30
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/en-us/adsi/adsi/iadsuser_groups.asp?frame=true
zgxbliss 2003-12-30
  • 打赏
  • 举报
回复
大家都没遇到过这个问题吗?到底能不能实现呢?
zgxbliss 2003-12-29
  • 打赏
  • 举报
回复
是要用程序实现的,有什么想法,思路提出来参考一下啊.
ygghost 2003-12-29
  • 打赏
  • 举报
回复
用程序吗?
好难啊

28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧