📄 netgroupapi.bas
字号:
NetError nRet
Exit Do
End If
lGroupInfoPtr = lGroupInfo
X = 1
Do While X <= nRead
CopyMem tGroupInfo, ByVal lGroupInfoPtr, Len(tGroupInfo)
GroupInfo.Name = PointerToStringW(tGroupInfo.Name)
i = i + 1
ReDim Preserve GrpList.List(1 To i) As GroupInfo0
GrpList.List(i) = GroupInfo
X = X + 1
lGroupInfoPtr = lGroupInfoPtr + Len(tGroupInfo)
Loop
lRetCode = NetApiBufferFree(lGroupInfo)
GrpList.Init = (X > 1)
Loop
GetUserLocalGroups = GrpList
End Function
'Ritorna un elenco dei gruppi globali di cui un utente fa parte
Public Function GetUserGroups(Server As String, User As String) As ListOfGroup0
Dim yServer() As Byte
Dim yUser() As Byte
Dim lRetCode As Long
Dim nRead As Long, nTotal As Long
Dim nRet As Long
Dim PrefMaxLen As Long
Dim i As Long, X As Long
Dim tGroupInfo As GROUP_INFO_0_API
Dim lGroupInfo As Long
Dim lGroupInfoPtr As Long
Dim GroupInfo As GroupInfo0
Dim GrpList As ListOfGroup0
yServer = MakeServerName(ByVal Server)
yUser = User & vbNullChar
PrefMaxLen = 65536
nRet = NERR_MoreData
Do While (nRet = NERR_MoreData)
nRet = NetUserGetGroups(yServer(0), _
yUser(0), _
0, _
lGroupInfo, _
PrefMaxLen, _
nRead, _
nTotal)
If (nRet <> NERR_Success And _
nRet <> NERR_MoreData) Then
GrpList.Init = False
GrpList.LastErr = nRet
NetError nRet
Exit Do
End If
lGroupInfoPtr = lGroupInfo
X = 1
Do While X <= nRead
CopyMem tGroupInfo, ByVal lGroupInfoPtr, Len(tGroupInfo)
GroupInfo.Name = PointerToStringW(tGroupInfo.Name)
i = i + 1
ReDim Preserve GrpList.List(1 To i) As GroupInfo0
GrpList.List(i) = GroupInfo
X = X + 1
lGroupInfoPtr = lGroupInfoPtr + Len(tGroupInfo)
Loop
lRetCode = NetApiBufferFree(lGroupInfo)
GrpList.Init = (X > 1)
Loop
GetUserGroups = GrpList
End Function
'Ritorna un elenco dei membri di un gruppo locale
Public Function LocalGroupsGetMember(Server As String, Group As String) As ListOfMemberGroup
Dim yServer() As Byte
Dim yGroup() As Byte
Dim lRetCode As Long
Dim nRead As Long, nTotal As Long
Dim nRet As Long, nResume As Long
Dim PrefMaxLen As Long
Dim i As Long, X As Long
Dim tGroupInfo As LOCALGROUP_MEMBERS_INFO_API
Dim lGroupInfo As Long
Dim lGroupInfoPtr As Long
Dim GroupInfo As GroupMemberInfo
Dim GrpList As ListOfMemberGroup
yServer = MakeServerName(ByVal Server)
yGroup = Group & vbNullChar
PrefMaxLen = 65536
nRet = NERR_MoreData
Do While (nRet = NERR_MoreData)
nRet = NetLocalGroupGetMembers(yServer(0), _
yGroup(0), _
1, _
lGroupInfo, _
PrefMaxLen, _
nRead, _
nTotal, _
nResume)
If (nRet <> NERR_Success And _
nRet <> NERR_MoreData) Then
GrpList.Init = False
GrpList.LastErr = nRet
NetError nRet
Exit Do
End If
lGroupInfoPtr = lGroupInfo
X = 1
Do While X <= nRead
CopyMem tGroupInfo, ByVal lGroupInfoPtr, Len(tGroupInfo)
GroupInfo.UserName = PointerToStringW(tGroupInfo.UserName)
GroupInfo.Attribute = tGroupInfo.Attribute
i = i + 1
ReDim Preserve GrpList.List(1 To i) As GroupMemberInfo
GrpList.List(i) = GroupInfo
X = X + 1
lGroupInfoPtr = lGroupInfoPtr + Len(tGroupInfo)
Loop
lRetCode = NetApiBufferFree(lGroupInfo)
GrpList.Init = (X > 1)
Loop
LocalGroupsGetMember = GrpList
End Function
'Ritorna un elenco dei membri di un gruppo globale
Public Function GlobalGroupsGetMember(Server As String, Group As String) As ListOfMemberGroup
Dim yServer() As Byte
Dim yGroup() As Byte
Dim lRetCode As Long
Dim nRead As Long, nTotal As Long
Dim nRet As Long, nResume As Long
Dim PrefMaxLen As Long
Dim i As Long, X As Long
Dim tGroupInfo As GLOBALGROUP_MEMBERS_INFO_API
Dim lGroupInfo As Long
Dim lGroupInfoPtr As Long
Dim GroupInfo As GroupMemberInfo
Dim GrpList As ListOfMemberGroup
yServer = MakeServerName(ByVal Server)
yGroup = Group & vbNullChar
PrefMaxLen = 65536
nRet = NERR_MoreData
Do While (nRet = NERR_MoreData)
nRet = NetGroupGetUsers(yServer(0), _
yGroup(0), _
1, _
lGroupInfo, _
PrefMaxLen, _
nRead, _
nTotal, _
nResume)
If (nRet <> NERR_Success And _
nRet <> NERR_MoreData) Then
GrpList.Init = False
GrpList.LastErr = nRet
NetError nRet
Exit Do
End If
lGroupInfoPtr = lGroupInfo
X = 1
Do While X <= nRead
CopyMem tGroupInfo, ByVal lGroupInfoPtr, Len(tGroupInfo)
GroupInfo.UserName = PointerToStringW(tGroupInfo.UserName)
'Non include i computer account
If Right(GroupInfo.UserName, 1) <> "$" Then
GroupInfo.Attribute = tGroupInfo.Attribute
i = i + 1
ReDim Preserve GrpList.List(1 To i) As GroupMemberInfo
GrpList.List(i) = GroupInfo
End If
X = X + 1
lGroupInfoPtr = lGroupInfoPtr + Len(tGroupInfo)
Loop
lRetCode = NetApiBufferFree(lGroupInfo)
GrpList.Init = (X > 1)
Loop
GlobalGroupsGetMember = GrpList
End Function
'Ritorna l'ID di un gruppo globale di un Dominio NT
Public Function GetGroupID(Group As String) As Long
Dim yServer() As Byte
Dim yGroup() As Byte
Dim lRetCode As Long
Dim nRet As Long
Dim tGroupInfo As GROUP_INFO_2_API
Dim lGroupInfo As Long
Dim lGroupInfoPtr As Long
yServer = MakeServerName(ByVal GetPDCName())
yGroup = Group & vbNullChar
nRet = NetGroupGetInfo(yServer(0), yGroup(0), 2, lGroupInfo)
If nRet = NERR_Success Then
lGroupInfoPtr = lGroupInfo
CopyMem tGroupInfo, ByVal lGroupInfoPtr, Len(tGroupInfo)
GetGroupID = tGroupInfo.GroupID
Else
NetError nRet
GetGroupID = 0
End If
lRetCode = NetApiBufferFree(lGroupInfo)
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -