netuserenum 出错,自动退出 或者是 0xxxxxxxxx内存不能为read 求高人帮助呀!!!
iamby 2009-01-13 01:47:42 Private Declare Function RtlMoveMemory Lib "kernel32.dll" (Destination As Any, Source As Any, ByRef Length As Long)
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
Private Declare Function NetApiBufferFree Lib "NETAPI32.DLL" (Buffer As Any) As Long
Private Type USER_INFO_0
usri0_name As Long
End Type
Dim lngWin32apiResultCode As Long
Dim strServerName As String
Dim lngBufPtr As Long
Dim lngMaxLen As Long
Dim lngEntriesRead As Long
Dim lngTotalEntries As Long
Dim lngResumeHandle As Long
Dim udtUserInfo0 As USER_INFO_0
Dim lngEntry As Long
Private Sub Command1_Click()
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 = lngTotalEntriesEnd Sub