[已解决]判断定指域帐号是否属指定的安全组问题
本帖最后由 fuinei 于 2012-3-30 11:21 编辑各位好,由于公司使用域管理,有时需判断指定的域帐号是否属特定安全组,,希望各位能告知一下如何可以判断定指域帐号是否属指定的安全组(如域帐号abc是否为安全组wireless的成员),谢谢! #Include <AD.au3>
_AD_IsMemberOf 回复 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)
请问为什么呢? 各位好,前天在P大和502762378兄的指导下了解到如何判断指定的帐号/组是否为本机管理员权限.由于公司使用域管 ...
fuinei 发表于 2012-3-30 08:25 http://www.autoitx.com/images/common/back.gif
好意提醒楼主:
按现在您的帖子的排版, 您觉得有利于他人阅读吗?
想别人帮助你, 为什么你还这么为难别人? 回复 4# user3000
谢谢提醒,马上修改主题描述 回复 5# fuinei
ad没连上? 回复 3# fuinei
很明显你的组名称输入错误
你用_AD_GetUserGroups看看组的全称是什么? 回复 7# 502762378
使用_AD_GetUserGrups还是相同的报错,奇怪!
由于AD中同一个用户可属多个组,这个自定义函数如果正常的话应该是会返回指定帐号所属的所有安全组吧? 回复 6# netegg
AD.udf是否需修改呢?我测试用的电脑已加入域,连接域控肯定是没有问题的 回复 8# fuinei
它会返回所有的通讯组和安全组,你_AD_Open()和_AD_close()了吗?
#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()
回复 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很好很强大 回复 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: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() 回复 14# fuinei
哈哈,是我没测试太严谨了,你的方法是对的
页:
[1]