fuinei 发表于 2012-3-30 08:25:15

[已解决]判断定指域帐号是否属指定的安全组问题

本帖最后由 fuinei 于 2012-3-30 11:21 编辑

各位好,由于公司使用域管理,有时需判断指定的域帐号是否属特定安全组,,希望各位能告知一下如何可以判断定指域帐号是否属指定的安全组(如域帐号abc是否为安全组wireless的成员),谢谢!

netegg 发表于 2012-3-30 08:56:59

#Include <AD.au3>
_AD_IsMemberOf

fuinei 发表于 2012-3-30 09:31:19

回复 2# netegg
<AD.au3>UDF前几天在我发的另外一个帖子中502762378兄提及过
http://www.autoitx.com/forum.php?mod=viewthread&tid=22817&highlight=AD
使用下面的代码测试时总是报错#Include <AD.au3>
$result = _AD_IsMemberOf("wireless","abc","")
MsgBox(0,"",$result)
请问为什么呢?

user3000 发表于 2012-3-30 09:36:08

各位好,前天在P大和502762378兄的指导下了解到如何判断指定的帐号/组是否为本机管理员权限.由于公司使用域管 ...
fuinei 发表于 2012-3-30 08:25 http://www.autoitx.com/images/common/back.gif


    好意提醒楼主:
    按现在您的帖子的排版, 您觉得有利于他人阅读吗?
    想别人帮助你, 为什么你还这么为难别人?

fuinei 发表于 2012-3-30 09:40:28

回复 4# user3000
谢谢提醒,马上修改主题描述

netegg 发表于 2012-3-30 09:50:36

回复 5# fuinei

ad没连上?

502762378 发表于 2012-3-30 09:52:52

回复 3# fuinei


    很明显你的组名称输入错误
你用_AD_GetUserGroups看看组的全称是什么?

fuinei 发表于 2012-3-30 10:05:20

回复 7# 502762378
使用_AD_GetUserGrups还是相同的报错,奇怪!
由于AD中同一个用户可属多个组,这个自定义函数如果正常的话应该是会返回指定帐号所属的所有安全组吧?

fuinei 发表于 2012-3-30 10:06:17

回复 6# netegg
AD.udf是否需修改呢?我测试用的电脑已加入域,连接域控肯定是没有问题的

502762378 发表于 2012-3-30 10:25:33

回复 8# fuinei


    它会返回所有的通讯组和安全组,你_AD_Open()和_AD_close()了吗?

502762378 发表于 2012-3-30 10:29:40


#include <AD.au3>
; 打开Active Directory连接
_AD_Open()
; 获取用户将成为其成员的组名(FQDN)的排序数组
Global $aUser = _AD_GetUserGroups("abc")
If @error > 0 Then
   MsgBox(64, "Active Directory Functions", "User '" & @UserName & "' has not been assigned to any group")
Else
_ArraySort($aUser, 0, 1)
   _ArrayDisplay($aUser, "Active Directory Functions - Group names user '" & @UserName & "' is immediately a member of")
EndIf
; 关闭Active Directory连接
_AD_Close()

fuinei 发表于 2012-3-30 10:53:15

回复 11# 502762378
原来是丢了_AD_open()和_AD_close()导致的,使用以下代码实现可符合要求#include <AD.au3>
_AD_Open()
$result = _AD_IsMemberOf("wireless","abc","")
If $result = 1 Then
        MsgBox(0,"",@UserName & "属wireless组")
Else
        MsgBox(0,"",@UserName & "不属wireless组")
EndIf
_AD_Close()AD.au3这个UDF很好很强大

502762378 发表于 2012-3-30 11:24:48

回复 12# fuinei


    告你先用_AD_GetUserGrups看abc的所有组名称
正确组名称的书写要写CN,OU,DC,你试试下边的码
#include <AD.au3>
_AD_Open()
$result = _AD_IsMemberOf("wireless","abc","")
If $result = 1 Then
      MsgBox(0,"",abc & "属wireless组")
Else
      MsgBox(0,"你看看错误多少",@error);错误1表示查询的组不存在
EndIf
_AD_Close()

fuinei 发表于 2012-3-30 11:53:00

本帖最后由 fuinei 于 2012-3-30 11:55 编辑

回复 13# 502762378

谢谢502762378兄的指导,正确的组名要写CN,OU,DC???我测试时不用也没有报错哦
你的代在条件成立的If语句中字符abc漏了引号,按照你的思路稍为修改了一下
#include <AD.au3>
_AD_Open()
$result = _AD_IsMemberOf("wireless","abc","")
If @error = 1 Then
        MsgBox(48,"Error","域中不存在wireless")
        Exit
EndIf
If $result = 1 Then
        MsgBox(0,"","abc" & "属wireless组")
Else
        MsgBox(0,"","abc" & "不属于wireless组")
EndIf
_AD_Close()

502762378 发表于 2012-3-30 12:07:32

回复 14# fuinei


    哈哈,是我没测试太严谨了,你的方法是对的
页: [1]
查看完整版本: [已解决]判断定指域帐号是否属指定的安全组问题