找回密码
 加入
搜索
查看: 3253|回复: 7

[系统综合] 【已解决】请问怎样检测当前用户属于那个本地组?

  [复制链接]
发表于 2010-10-20 11:21:40 | 显示全部楼层 |阅读模式
本帖最后由 yinui 于 2010-10-21 10:16 编辑

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

评分

参与人数 1金钱 +10 收起 理由
afan + 10 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 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[0] == $username Then
                                $temp = StringRegExp($objItem.GroupComponent, 'Name=\"(.*?)\"', 3)
                                $Output &= $temp[0] & "|"
                        EndIf
                Next

                Return StringSplit(StringTrimRight($Output, 1), "|")
        Else
                MsgBox(0, "WMI 输出", "没有在类 " & "Win32_GroupUser" & "中找到WMI对象")
        EndIf
EndFunc   ;==>_getusergroup

评分

参与人数 2金钱 +50 收起 理由
anythinging + 30 神马都是浮云
afan + 20

查看全部评分

发表于 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服务就用不了啦,试试这个。

评分

参与人数 1金钱 +20 收起 理由
3mile + 20 有道理

查看全部评分

发表于 2010-10-21 06:00:07 | 显示全部楼层
#Include <AD.au3>
_AD_GetUserGroups

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

发表于 2010-10-21 09:16:49 | 显示全部楼层
楼上 都是大能

#Include <AD.au3>
_AD_GetUserGroups
 楼主| 发表于 2010-10-21 09:29:12 | 显示全部楼层
谢谢,问题已解决,3楼的方法不错!想问下4楼的大哥,AD.au3在哪里?
 楼主| 发表于 2010-10-21 09:29:17 | 显示全部楼层
谢谢,问题已解决,3楼的方法不错!想问下4楼的大哥,AD.au3在哪里?
 楼主| 发表于 2010-10-21 09:44:20 | 显示全部楼层
本帖最后由 yinui 于 2010-10-21 09:46 编辑
#include <LocalSecurityAuthority.au3>
$GroupName= _LsaLocalUserGetGroups(@UserName)
For $i=1 To $GroupName[0]
    MsgBox (0, "本地组名称", $GroupName[$i])
Next
我发现这样更好!谢谢大家的帮助
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-28 05:04 , Processed in 0.098411 second(s), 32 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表