⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 netgroupapi.bas

📁 这是一个带公历农历日历及查询、并带有自动关机
💻 BAS
📖 第 1 页 / 共 2 页
字号:
            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 + -