-
Notifications
You must be signed in to change notification settings - Fork 8
/
Copy pathNetLocalGroupEnum.ahk
53 lines (44 loc) · 2.1 KB
/
NetLocalGroupEnum.ahk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
; ===========================================================================================================================================================================
; Returns information about each local group account on the specified server.
; Tested with AutoHotkey v2.0-beta.3
; ===========================================================================================================================================================================
NetLocalGroupEnum(ServerName := "127.0.0.1")
{
#DllLoad "netapi32.dll"
static NERR_SUCCESS := 0
static LOCALGROUP_INFO_1 := 1
static MAX_PREFERRED_LENGTH := -1
NET_API_STATUS := DllCall("netapi32\NetLocalGroupEnum", "WStr", ServerName
, "UInt", LOCALGROUP_INFO_1
, "Ptr*", &Buf := 0
, "UInt", MAX_PREFERRED_LENGTH
, "UInt*", &EntriesRead := 0
, "UInt*", &TotalEntries := 0
, "UPtr*", 0
, "UInt")
if (NET_API_STATUS = NERR_SUCCESS)
{
Addr := Buf
LOCALGROUP_INFO := Map()
loop EntriesRead
{
INFO := Map()
INFO["name"] := (Ptr := NumGet(Addr, A_PtrSize * 0, "Ptr")) ? StrGet(Ptr) : ""
INFO["comment"] := (Ptr := NumGet(Addr, A_PtrSize * 1, "Ptr")) ? StrGet(Ptr) : ""
LOCALGROUP_INFO[A_Index] := INFO
Addr += A_PtrSize * 2
}
DllCall("netapi32\NetApiBufferFree", "Ptr", Buf, "UInt")
return LOCALGROUP_INFO
}
DllCall("netapi32\NetApiBufferFree", "Ptr", Buf, "UInt")
return false
}
; ===========================================================================================================================================================================
LocalGroupEnum := NetLocalGroupEnum("dc.contoso.com")
for i, v in LocalGroupEnum {
for k, v in LocalGroupEnum[i]
output .= k ": " v "`n"
MsgBox output
output := ""
}