yinui 发表于 2010-10-20 11:21:40

【已解决】请问怎样检测当前用户属于那个本地组?

本帖最后由 yinui 于 2010-10-21 10:16 编辑

我知道LocalSecurityAuthority.au3应该可以实现,但LocalSecurityAuthority.au3怎样用呢?

3mile 发表于 2010-10-20 14:33:20

#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:49:26

本帖最后由 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服务就用不了啦,试试这个。

netegg 发表于 2010-10-21 06:00:07

#Include <AD.au3>
_AD_GetUserGroups

真会走路的废柴 发表于 2010-10-21 09:16:49

楼上 都是大能

#Include <AD.au3>
_AD_GetUserGroups

yinui 发表于 2010-10-21 09:29:12

谢谢,问题已解决,3楼的方法不错!想问下4楼的大哥,AD.au3在哪里?

yinui 发表于 2010-10-21 09:29:17

谢谢,问题已解决,3楼的方法不错!想问下4楼的大哥,AD.au3在哪里?

yinui 发表于 2010-10-21 09:44:20

本帖最后由 yinui 于 2010-10-21 09:46 编辑

#include <LocalSecurityAuthority.au3>
$GroupName= _LsaLocalUserGetGroups(@UserName)
For $i=1 To $GroupName
    MsgBox (0, "本地组名称", $GroupName[$i])
Next我发现这样更好!谢谢大家的帮助
页: [1]
查看完整版本: 【已解决】请问怎样检测当前用户属于那个本地组?