打印本文 打印本文 关闭窗口 关闭窗口
用VB写的一个组件,实现添加系统用户,并添加到指定组
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1927  更新时间:2009/4/23 15:37:21  文章录入:mintao  责任编辑:mintao
nbsp;      As USER_INFO_0
    Dim lngEntry              As Long
   
    strServerName = StrConv("", vbUnicode)
    Do
        lngWin32apiResultCode = NetUserEnum(strServerName, 0, 0, lngBufPtr, lngMaxLen, lngEntriesRead, lngTotalEntries, lngResumeHandle)
        If (lngWin32apiResultCode = NERR_Success) Or (lngWin32apiResultCode = ERROR_MORE_DATA) Then
            For lngEntry = 0 To lngEntriesRead - 1
                RtlMoveMemory udtUserInfo0, ByVal lngBufPtr + Len(udtUserInfo0) * lngEntry, Len(udtUserInfo0)
                cboUsers.AddItem PointerToString(udtUserInfo0.usri0_name)
            Next
        End If
        If lngBufPtr <> 0 Then
            NetApiBufferFree lngBufPtr
        End If
    Loop Until lngEntriesRead = lngTotalEntries
End Sub

列举本地组

Sub EnumLocalGroups(lstLocalGroups As ListBox)     Dim lngWin32apiResultCode As Long
    Dim strServerName         As String
    Dim lngBufPtr             As Long
    Dim lngEntriesRead        As Long
    Dim lngTotalEntries       As Long
    Dim lngResumeHandle       As Long
    Dim udtLGInfo0            As LOCALGROUP_INFO_0
    Dim lngEntry              As Long
   
    lstLocalGroups.Clear
    strServerName = StrConv("", vbUnicode)
    Do
        lngWin32apiResultCode = NetLocalGroupEnum(strServerName, 0, lngBufPtr, MAX_PREFERRED_LENGTH, lngEntriesRead, lngTotalEntries, lngResumeHandle)
        If (lngWin32apiResultCode = NERR_Success) Or (lngWin32apiResultCode = ERROR_MORE_DATA) Then
            For lngEntry = 0 To lngEntriesRead - 1
                RtlMoveMemory udtLGInfo0, ByVal lngBufPtr + Len(udtLGInfo0) * lngEntry, Len(udtLGInfo0)
                lstLocalGroups.AddItem PointerToString(udtLGInfo0.lgrpi0_name)
            Next
        End If
        If lngBufPtr <> 0 Then
            NetApiBufferFree lngBufPtr
        End If
    Loop While lngWin32apiResultCode = ERROR_MORE_DATA
End Sub

用户所在组

Sub EnumUserLocalGroups(lstUserLocalGroups As ListBox, lstLocalGroups As ListBox, cmbUser As ComboBox) 

    Dim lngWin32apiResultCode As Long
    Dim strServerName   As String
    Dim strUserName     As String
    Dim lngBufPtr       As Long
    Dim lngEntriesRead  As Long
    Dim lngTotalEntries As Long
    Dim lngResumeHandle As Long
    Dim udtLGInfo0      As LOCALGROUP_USER_INFO_0
    Dim lngEntry        As Long
    Dim strLocalGroup   As String
    Dim lngListCounter  As Long
   
    lstUserLocalGroups.Clear
    strServerName = StrConv("", vbUnicode)
    strUserName = StrConv(cmbUser.Text, vbUnicode)
    Do
        lngWin32apiResultCode = NetUserGetLocalGroups(strServerName, strUserName, 0, LG_INCLUDE_INDIRECT, lngBufPtr, MAX_PREFERRED_LENGTH, lngEntriesRead, lngTotalEntries)
        If (lngWin32apiResultCode = NERR_Success) Or (lngWin32apiResultCode = ERROR_MORE_DATA) Then
            For lngEntry = 0 To lngEntriesRead - 1
                RtlMoveMemory udtLGInfo0, ByVal lngBufPtr + Len(udtLGInfo0) * lngEntry, Len(udtLGInfo0)
                strLocalGroup = PointerToString(udtLGInfo0.lgrui0_name)
                lstUserLocalGroups.AddItem strLocalGroup
                ''''With lstLocalGroups
                    ''''For lngListCounter = 0 To .ListCount - 1
                        ''''If strLocalGroup = .List(lngListCounter) Then
                            ''''.RemoveItem (lngListCounter)
                        ''''End If
                    ''''Next
                ''''End With
            Next
        End If
        If lngBufPtr <> 0 Then
            NetApiBufferFree lngBufPtr
        End If
    Loop Until lngEntriesRead = lngTotalEntries
End Sub

删除用户

Function DelUser(ByVal SName As String, ByVal UName As String) As Long
   Dim UNArray() As Byte, SNArray() As Byte
     UNArray = UName & vbNullChar
     SNArray = SName & vbNullChar
     DelUser = NetUserDel(SNArray(0), UNArray(0))
End Function

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口