【已解决】请问怎样检测当前用户属于那个本地组?
本帖最后由 yinui 于 2010-10-21 10:16 编辑我知道LocalSecurityAuthority.au3应该可以实现,但LocalSecurityAuthority.au3怎样用呢? #include <array.au3>
$group = _getusergroup("Administrator");返回用户所在的组,区分大小写
_ArrayDisplay($group, "Administrator所在的组")
$group = _getusergroup(@UserName);返回当前用户所在的组
_ArrayDisplay($group, @UserName & "所在的组")
Func _getusergroup($username)
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $colItems = ""
Local $strComputer = "localhost"
Local $Output = "", $user
Local $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
$colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_GroupUser", "WQL", _
$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If IsObj($colItems) Then
For $objItem In $colItems
$user = StringRegExp($objItem.PartComponent, 'Name=\"(.*?)\"', 3)
If $user == $username Then
$temp = StringRegExp($objItem.GroupComponent, 'Name=\"(.*?)\"', 3)
$Output &= $temp & "|"
EndIf
Next
Return StringSplit(StringTrimRight($Output, 1), "|")
Else
MsgBox(0, "WMI 输出", "没有在类 " & "Win32_GroupUser" & "中找到WMI对象")
EndIf
EndFunc ;==>_getusergroup 本帖最后由 lanfengc 于 2010-10-20 20:51 编辑
#include <file.au3>
Dim $array
Run(@SystemDir&"\cmd.exe /c net user "&@UserName&" >"&@TempDir&"\user.txt",@SystemDir,@SW_HIDE)
_FileReadToArray(@TempDir&"\user.txt",$array)
For $i=1 To UBound($array)-1
If StringLeft($array[$i],5)="本地组成员" Then
MsgBox(0,@UserName,$array[$i])
EndIf
Next
楼上的那个如果机器没开WMIC服务就用不了啦,试试这个。 #Include <AD.au3>
_AD_GetUserGroups 楼上 都是大能
#Include <AD.au3>
_AD_GetUserGroups 谢谢,问题已解决,3楼的方法不错!想问下4楼的大哥,AD.au3在哪里? 谢谢,问题已解决,3楼的方法不错!想问下4楼的大哥,AD.au3在哪里? 本帖最后由 yinui 于 2010-10-21 09:46 编辑
#include <LocalSecurityAuthority.au3>
$GroupName= _LsaLocalUserGetGroups(@UserName)
For $i=1 To $GroupName
MsgBox (0, "本地组名称", $GroupName[$i])
Next我发现这样更好!谢谢大家的帮助
页:
[1]