Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0479: Alle Computer im Netzwerk auflisten

 von 

Beschreibung 

Dieses Programm listet alle in einer Domäne vorhandenen Computer auf. Wenn ein Computer ausgewählt ist, wird eine Liste aller Benutzer dieses Rechners zurückgegeben (Netzwerkbenutzer und Lokale User).

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

RtlMoveMemory (CopyMemory), NetApiBufferFree, NetGetDCName, NetServerEnum, NetUserEnum, lstrlenW

Download:

Download des Beispielprojektes [7,13 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
' Die Komponente 'Microsoft Windows Common Controls 6.0 (SP6) (mscomctl.ocx)' wird benötigt.

'--- Anfang Formular "frmUserView" alias frmUserView.frm  ---
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Listenanzeigesteuerungselement "Users"
' Steuerelement: Bilderlistenelement "ImageList1"
' Steuerelement: Listenanzeigesteuerungselement "SrvList"

Option Explicit
'Autor: Ruru, ruru@11mail.com

Dim OldUser As String
Dim Domain As String

Sub SeekComputer()
    
    Dim x As Integer, xItem As ListItem
    Dim ServerList As ListOfServer
    
    MousePointer = vbHourglass
    
    Me.SrvList.ListItems.Clear
    Me.SrvList.Enabled = False
    
    ServerList = EnumServer(SRV_TYPE_ALL)
    If ServerList.Init Then
        For x = 1 To UBound(ServerList.List)
            Set xItem = Me.SrvList.ListItems.Add(, , ServerList.List(x).ServerName)
            xItem.SubItems(1) = ServerList.List(x).Comment
            
            Select Case ServerList.List(x).Type
                Case Is >= 5
                    'xItem.Tag = "x"
                    xItem.SmallIcon = 1
                    xItem.SubItems(2) = " Workstation"
                Case Is = 4
                    xItem.SmallIcon = 2
                    xItem.SubItems(2) = " Server"
                Case Else
                    xItem.SmallIcon = 1
                    xItem.SubItems(2) = " Workstation"
            End Select
        Next
    End If
    
    Me.SrvList.Enabled = (Me.SrvList.ListItems.Count > 0)
    MousePointer = vbDefault
    
End Sub

Private Sub Command1_Click()
    SrvList.Visible = True
    Users.Visible = False
    Me.Caption = "Bitte Computer aus folgender Domäne wählen:   " & Domain
End Sub

Private Sub Form_Load()
    Dim x As Integer
    Dim xItem As ListItem
    Dim WksInfo As ServerInfo
    
    MousePointer = vbHourglass
    
    ' Einfaches lesen der Domäne über Wscript
    Dim objWshNet As Object
    Set objWshNet = CreateObject("Wscript.Network")
    
    Domain = objWshNet.userdomain
    Set objWshNet = Nothing
    
    If Domain <> "" Then
        Me.Caption = "Bitte Computer aus folgender Domäne wählen:   " & Domain
    Else
        MsgBox "Computer ist an keiner Domäne angeschlossen." & vbNewLine & _
            "Bitte Netzkabel und Netzverbindung überprüfen", vbExclamation, "Warnung"
        End
    End If
    
    MousePointer = vbDefault
    SeekComputer
    
    If CurrentServer <> "" Then
        Set xItem = Me.SrvList.FindItem(CurrentServer)
        If xItem Is Nothing Then
            Exit Sub
        Else
            xItem.EnsureVisible
            xItem.Selected = True
        End If
    End If
    
End Sub

Private Sub LoadAccountList(CurServer As String)
    Dim x As Integer
    Dim LocalUsers As ListOfUserExt
    Dim xItem As ListItem
    
    Me.Users.ListItems.Clear
    
    LocalUsers = LongEnumUsers(CurServer)
    If LocalUsers.Init Then
        For x = 1 To UBound(LocalUsers.List)
            Set xItem = Me.Users.ListItems.Add(, , LocalUsers.List(x).Name)
            xItem.SubItems(1) = LocalUsers.List(x).FullName
            xItem.SubItems(2) = LocalUsers.List(x).Comment
        Next
    End If
    
    Me.Users.Enabled = (Me.Users.ListItems.Count > 0)
    
    If Me.Users.Enabled Then
        Set xItem = Nothing
        If OldUser <> "" Then
            Set xItem = Me.Users.FindItem(OldUser)
        End If
        If xItem Is Nothing Then
            Set Me.Users.SelectedItem = Me.Users.ListItems(1)
        Else
            Set Me.Users.SelectedItem = xItem
        End If
        Me.Users.SelectedItem.EnsureVisible
    End If
    
    If LocalUsers.LastErr > 0 Then Unload Me
    
End Sub

Private Sub SrvList_DblClick()
    '    If Me.SrvList.SelectedItem.Tag = "x" Then
    '        Beep
    '        MsgBox "Bitte einen Server angeben"
    '    Else
    CurrentServer = Me.SrvList.SelectedItem.Text
    Me.Caption = "NT Userliste   " & CurrentServer
    SrvList.Visible = False
    Users.Visible = True
    LoadAccountList (CurrentServer)
    '    End If
End Sub

'---- Ende Formular "frmUserView" alias frmUserView.frm  ----
'--------- Anfang Modul "Module1" alias Module1.bas ---------

Option Explicit

' Declarationen
Public Const NERR_Success As Long = 0&
Public Const NERR_Access_Denied As Long = 5&
Public Const NERR_MoreData As Long = 234&

Public Const SRV_TYPE_SERVER As Long = &H2&
Public Const SRV_TYPE_SQLSERVER As Long = &H4&
Public Const SRV_TYPE_NT_PDC As Long = &H8&
Public Const SRV_TYPE_NT_BDC As Long = &H10&
Public Const SRV_TYPE_PRINT As Long = &H200&
Public Const SRV_TYPE_NT As Long = &H1000&
Public Const SRV_TYPE_ALL As Long = &HFFFF&
Public Const SRV_TYPE_RAS As Long = &H400&

Public Const SHORT_LEVEL As Long = 10&
Public Const EXTENDED_LEVEL As Long = 3&

Public Const USER_ACC_NOPWD_CHANGE As Long = 577&
Public Const USER_ACC_NOPWD_EXPIRE As Long = 66049
Public Const USER_ACC_DISABLED As Long = 515&
Public Const USER_ACC_LOCKED As Long = 529&

Private Type SERVER_INFO_API
    PlatformId As Long
    ServerName As Long
    Type As Long
    VerMajor As Long
    VerMinor As Long
    Comment As Long
End Type

Private Type WKSTA_INFO_API
    PlatformId As Long
    ComputerName As Long
    LanGroup As Long
    VerMajor As Long
    VerMinor As Long
    LanRoot As Long
End Type

Type ServerInfo
    PlatformId As Long
    ServerName As String
    Type As Long
    VerMajor As Long
    VerMinor As Long
    Comment As String
    Platform As String
    ServerType As Integer
    LanGroup As String
    LanRoot As String
End Type

Type ListOfServer
    Init As Boolean
    LastErr As Long
    List() As ServerInfo
End Type

Private Type USER_INFO_EXT_API
    Name As Long
    Password As Long
    PasswordAge As Long
    Privilege As Long
    HomeDir As Long
    Comment As Long
    Flags As Long
    ScriptPath As Long
    AuthFlags As Long
    FullName As Long
    UserComment As Long
    Parms As Long
    Workstations As Long
    LastLogon As Long
    LastLogoff As Long
    AcctExpires As Long
    MaxStorage As Long
    UnitsPerWeek As Long
    LogonHours As Long
    BadPwCount As Long
    NumLogons As Long
    LogonServer As Long
    CountryCode As Long
    CodePage As Long
    UserID As Long
    PrimaryGroupID As Long
    Profile As Long
    HomeDirDrive As Long
    PasswordExpired As Long
End Type

Type UserInfoExt
    Name As String
    Password As String
    PasswordAge As String
    Privilege As Long
    HomeDir As String
    Comment As String
    Flags As Long
    NoChangePwd As Boolean
    NoExpirePwd As Boolean
    AccDisabled As Boolean
    AccLocked As Boolean
    ScriptPath As String
    AuthFlags As Long
    FullName As String
    UserComment As String
    Parms As String
    Workstations As String
    LastLogon As Date
    LastLogoff As Date
    AcctExpires As Date
    MaxStorage As Long
    UnitsPerWeek As Long
    LogonHours(0 To 20) As Byte
    BadPwCount As Long
    NumLogons As Long
    LogonServer As String
    CountryCode As Long
    CodePage As Long
    UserID As Long
    PrimaryGroupID As Long
    Profile As String
    HomeDirDrive As String
    PasswordExpired As Boolean
End Type

Type ListOfUserExt
    Init As Boolean
    LastErr As Long
    List() As UserInfoExt
End Type

Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
        (pTo As Any, uFrom As Any, ByVal lSize As Long)

Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long

Declare Function NetApiBufferFree Lib "netapi32" (ByVal lBuffer As Long) As Long

Declare Function NetGetDCName Lib "netapi32" (lpServer As Any, _
        lpDomain As Any, vBuffer As Any) As Long

Declare Function NetServerEnum Lib "netapi32" _
        (lpServer As Any, ByVal lLevel As Long, vBuffer As Any, _
         lPreferedMaxLen As Long, lEntriesRead As Long, lTotalEntries As Long, _
         ByVal lServerType As Long, ByVal sDomain As String, vResume As Any) As Long

Declare Function NetUserEnum Lib "netapi32" _
        (lpServer As Any, ByVal Level As Long, _
         ByVal Filter As Long, lpBuffer As Long, _
         ByVal PrefMaxLen As Long, lpEntriesRead As Long, _
         lpTotalEntries As Long, lpResumeHandle As Long) As Long

Public CurrentServer As String

Public Function EnumServer(lServerType As Long) As ListOfServer
    Dim nRet As Long, x As Integer, i As Integer
    Dim lRetCode As Long
    Dim tServerInfo As SERVER_INFO_API
    Dim lServerInfo As Long
    Dim lServerInfoPtr As Long
    Dim ServerInfo As ServerInfo
    Dim lPreferedMaxLen As Long
    Dim lEntriesRead As Long
    Dim lTotalEntries As Long
    Dim sDomain As String
    Dim vResume As Variant
    Dim yServer() As Byte
    Dim SrvList As ListOfServer
    
    yServer = MakeServerName(ByVal "")
    lPreferedMaxLen = 65536
    
    nRet = NERR_MoreData
    Do While (nRet = NERR_MoreData)
        
        'Call NetServerEnum to get a list of Servers
        nRet = NetServerEnum(yServer(0), 101, lServerInfo, _
                             lPreferedMaxLen, lEntriesRead, _
                             lTotalEntries, lServerType, _
                             sDomain, vResume)
        
        If (nRet <> NERR_Success And _
            nRet <> NERR_MoreData) Then
             
            SrvList.Init = False
            SrvList.LastErr = nRet
            NetError nRet
            Exit Do
        End If
        
        ' NetServerEnum Index is 1 based
        x = 1
        lServerInfoPtr = lServerInfo
        
        Do While x <= lTotalEntries
            
            CopyMemory tServerInfo, ByVal lServerInfoPtr, Len(tServerInfo)
            
            ServerInfo.Comment = PointerToStringW(tServerInfo.Comment)
            ServerInfo.ServerName = PointerToStringW(tServerInfo.ServerName)
            ServerInfo.Type = tServerInfo.Type
            ServerInfo.PlatformId = tServerInfo.PlatformId
            ServerInfo.VerMajor = tServerInfo.VerMajor
            ServerInfo.VerMinor = tServerInfo.VerMinor
            
            i = i + 1
            ReDim Preserve SrvList.List(1 To i) As ServerInfo
            SrvList.List(i) = ServerInfo
            
            x = x + 1
            lServerInfoPtr = lServerInfoPtr + Len(tServerInfo)
            
        Loop
        
        lRetCode = NetApiBufferFree(lServerInfo)
        SrvList.Init = (x > 1)
        
    Loop
    
    EnumServer = SrvList
    
End Function

Public Function GetPDCName() As String
    Dim lpBuffer As Long, nRet As Long
    Dim yServer() As Byte
    Dim sLocal As String
    
    yServer = MakeServerName(ByVal "")
    
    nRet = NetGetDCName(yServer(0), yServer(0), lpBuffer)
    
    If nRet = 0 Then
        sLocal = PointerToStringW(lpBuffer)
    End If
    
    If lpBuffer Then Call NetApiBufferFree(lpBuffer)
    
    GetPDCName = sLocal
    
End Function

' Function Read User Information - for future development!
Public Function LongEnumUsers(Server As String) As ListOfUserExt
    Dim yServer() As Byte, 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 lUserInfo As Long
    Dim lUserInfoPtr As Long
    Dim UserInfo As UserInfoExt
    Dim UserList As ListOfUserExt
    Dim tUserInfo As USER_INFO_EXT_API
    
    yServer = MakeServerName(ByVal Server)
    PrefMaxLen = 65536
    
    nRet = NERR_MoreData
    Do While (nRet = NERR_MoreData)
        nRet = NetUserEnum(yServer(0), EXTENDED_LEVEL, 2, _
                           lUserInfo, PrefMaxLen, nRead, _
                           nTotal, nResume)
        
        If (nRet <> NERR_Success And _
             nRet <> NERR_MoreData) Then
            UserList.Init = False
            UserList.LastErr = nRet
            NetError nRet
            Exit Do
        End If
        
        lUserInfoPtr = lUserInfo
        
        x = 1
        Do While x <= nRead
            
            CopyMemory tUserInfo, ByVal lUserInfoPtr, Len(tUserInfo)
            
            UserInfo.Name = PointerToStringW(tUserInfo.Name)
            UserInfo.Password = PointerToStringW(tUserInfo.Password)
            UserInfo.PasswordAge = Format(tUserInfo.PasswordAge / 86400, "0.0")
            UserInfo.Privilege = tUserInfo.Privilege
            UserInfo.HomeDir = PointerToStringW(tUserInfo.HomeDir)
            UserInfo.Comment = PointerToStringW(tUserInfo.Comment)
            UserInfo.Flags = tUserInfo.Flags
            UserInfo.NoChangePwd = CBool((tUserInfo.Flags Or USER_ACC_NOPWD_CHANGE) = _
                tUserInfo.Flags)
            UserInfo.NoExpirePwd = CBool((tUserInfo.Flags Or USER_ACC_NOPWD_EXPIRE) = _
                tUserInfo.Flags)
            UserInfo.AccDisabled = CBool((tUserInfo.Flags Or USER_ACC_DISABLED) = tUserInfo.Flags)
            UserInfo.AccLocked = CBool((tUserInfo.Flags Or USER_ACC_LOCKED) = tUserInfo.Flags)
            UserInfo.ScriptPath = PointerToStringW(tUserInfo.ScriptPath)
            UserInfo.AuthFlags = tUserInfo.AuthFlags
            UserInfo.FullName = PointerToStringW(tUserInfo.FullName)
            UserInfo.UserComment = PointerToStringW(tUserInfo.UserComment)
            UserInfo.Parms = PointerToStringW(tUserInfo.Parms)
            UserInfo.Workstations = PointerToStringW(tUserInfo.Workstations)
            UserInfo.LastLogon = NetTimeToVbTime(tUserInfo.LastLogon)
            UserInfo.LastLogoff = NetTimeToVbTime(tUserInfo.LastLogoff)
            If tUserInfo.AcctExpires = -1& Then
                UserInfo.AcctExpires = NetTimeToVbTime(0)
            Else
                UserInfo.AcctExpires = NetTimeToVbTime(tUserInfo.AcctExpires)
            End If
            UserInfo.MaxStorage = tUserInfo.MaxStorage
            UserInfo.UnitsPerWeek = tUserInfo.UnitsPerWeek
            CopyMemory UserInfo.LogonHours(0), ByVal tUserInfo.LogonHours, 21
            UserInfo.BadPwCount = tUserInfo.BadPwCount
            UserInfo.NumLogons = tUserInfo.NumLogons
            UserInfo.LogonServer = PointerToStringW(tUserInfo.LogonServer)
            UserInfo.CountryCode = tUserInfo.CountryCode
            UserInfo.CodePage = tUserInfo.CodePage
            UserInfo.UserID = tUserInfo.UserID
            UserInfo.PrimaryGroupID = tUserInfo.PrimaryGroupID
            UserInfo.Profile = PointerToStringW(tUserInfo.Profile)
            UserInfo.HomeDirDrive = PointerToStringW(tUserInfo.HomeDirDrive)
            UserInfo.PasswordExpired = CBool(tUserInfo.PasswordExpired)
            
            i = i + 1
            ReDim Preserve UserList.List(1 To i) As UserInfoExt
            UserList.List(i) = UserInfo
            x = x + 1
            
            lUserInfoPtr = lUserInfoPtr + Len(tUserInfo)
            
        Loop
        
        lRetCode = NetApiBufferFree(lUserInfo)
        UserList.Init = (x > 1)
        
    Loop
    
    LongEnumUsers = UserList
    
End Function

Public Function MakeServerName(ByVal ServerName As String)
    Dim yServer() As Byte
    
    If ServerName <> "" Then
        If InStr(1, ServerName, "\\") = 0 Then
            ServerName = "\\" & ServerName
        End If
    End If
    
    yServer = ServerName & vbNullChar
    MakeServerName = yServer
    
End Function

Public Function NetError(nErr As Long, Optional Ret) As String
    Dim Msg As String
    
    If IsMissing(Ret) Then Ret = False
    
    Select Case nErr
        Case 5
            Msg = "Access Denied!"
            
        Case 1722
            Msg = "Server not accessible!"
            
        Case 1326
            Msg = " Sie besitzen nicht die Berechtigungen dafür"
            
        Case Else
            Msg = "Error Nr. (" & nErr & ") !"
    End Select
    
    If Not Ret Then
        Beep
        MsgBox Msg, vbCritical, "Net Error"
    Else
        NetError = Msg
    End If
    
End Function

Public Function NetTimeToVbTime(NetDate As Long) As Double
    Const BaseDate# = 25569   'DateSerial(1970, 1, 1)
    Const SecsPerDay# = 86400
    Dim Tmp As Double
    
    Tmp = BaseDate + (CDbl(NetDate) / SecsPerDay)
    If Tmp <> BaseDate Then
        NetTimeToVbTime = Tmp
    End If
    
End Function

Public Function PointerToStringW(lpStringW As Long) As String
    Dim buffer() As Byte
    Dim nLen As Long
    
    If lpStringW Then
        nLen = lstrlenW(lpStringW) * 2
        If nLen Then
            ReDim buffer(0 To (nLen - 1)) As Byte
            CopyMemory buffer(0), ByVal lpStringW, nLen
            PointerToStringW = buffer
        End If
    End If
End Function


'---------- Ende Modul "Module1" alias Module1.bas ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 30 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von raikus am 30.04.2005 um 10:18

Hi,
mit VB6.0 (VisualStudio) und WinXPPro kein Problem, das Prog läuft ohne Modifikationen und Fehlermeldungen...
VG

Kommentar von Coder am 17.10.2004 um 16:24


Ich habe da folgendes Problem: Wenn ich den Code kopiere und das Prog ausführen möchte,
erscheint bei folgendem Code ein Laufzeitfehler 380 (Ungültiger Eigenschaftswert)

xItem.SubItems(1) = ServerList.List(x).Comment


(Auszug Prozedur SeekServer)

ich habe das schon was auskommentiert. Aber der Code scheint ja voller Fehler zu stecken
Habe mindestens 3 weitere Fehler gefunden.
Es gibt jeweils einen Fehler 380 bei folgendem Code

xItem.SubItems(x) = yyy


Weis da einer vielleicht einer weiter??

(Ich nutze VB6 Pro auf XP Pro)

Kommentar von Hans am 03.10.2004 um 22:35

Kann mir mal bitte Sagen, welchen Teil man von diesem riesigem Code braucht, um nur die Computernamen im Netz herauszufinden?

Danke
Gruß Hans

Kommentar von Lee am 07.06.2004 um 12:08

Funktioniert ja sogar noch unter VB4, wenn man vorher mit nem Texteditor kleine Änderungen macht und das Projektfile wegschmeißt und neu erzeugt.

Vorgehensweise:
Aus der FRM-Datei die ersten beiden Zeilen löschen und vbNewLine durch vbCrLf ersetzen. Neues Projekt anlegen und Microsoft Windows Common Controls hinzufügen. Nun die Form und das Modul hinzufügen und den Hinweis, daß die Versionsnummer fehlt, ignorieren.

Kommentar von Thomas Söhne am 30.04.2004 um 10:05

@Patrick

vermutlich fehlt Dir der WSH (Windows Scripting Host)
der die erforderlichen Objekte bereitstellt!

@God'sfriend

naja, mit passwörtern ist dir ja nicht geholfen, oder
meinst du Administratorpasswort?

Aber mal im ernst, wenn Du über das Netzwerk (womöglich noch ohne Kenntnis des Admin-User-Namen und Passwort)
die Userkonten und Passwörter abrufen könntest, wäre das nicht eine Sicherheitslücke?
Dann würden User- und Passwort-Schutz in Netzwerken bei MS ja keinen Sinn machen :).

Trotzdem ist in dem o.g. source unter UserInfoExt evtl.
eine Lösung für deine Frage vorhanden?

Gruß
Thomas

Kommentar von God'sfriend am 29.04.2004 um 17:51

Kann man da au mache, dass man die Passwörter sieht??
wenn ja sagt mir bitte wie

Kommentar von Patrick Hegemann am 21.02.2004 um 19:29

Das Programm geht bei mir nicht. Bei der folgenden Zeile bringt er die Fehlermeldung:

"Laufzeitfehler '429'
Objekterstellung durch ActiveX-Komponente nich möglich."

Hier die Zeile:

Set objWshNet = CreateObject("Wscript.Network")

Kann mir einer weiterhelfen?

mfg
Patrick

Kommentar von Mgalpha am 17.08.2003 um 02:16

giebt doch was besseres als das hier !!!

0046: Alle Netzwerkressourcen erfassen

Kommentar von Christian Hilb am 23.07.2003 um 14:14

Bei mir klappt zwar das Prog. aber es dauert oft ziemlich lange (bis zu 1 min). Mein Prog. hängt sich dann an einer Routine auf. DoEvents tun auch nicht. Kann das an der Netzwerkeinrichtung liegen? (Netzwerkumgebung im Explorer auch sehr langsam)
Hab VB6 auf WinXP Pro. und bin an zwei Hubs mit dem Netz verbunden.
Ich würde mich sehr über irgendwelche Hilfe oder Tipps freuen.

Kommentar von Thomas Söhne am 15.07.2003 um 16:03

Hallo,

und es geht doch ohne Domäne! Denn ich habe keine.
Das Programm zeigt alle Rechner in meiner Arbeitsgruppe an !
Selbstverständlich kann ich mir nur die User meines Rechners ansehen, denn auf den anderen bin ich nicht dazu berechtigt über Remote anzufragen.

Gruß
Thomas

Kommentar von VB Developer from USA am 09.07.2003 um 13:10

I think you guys are communicating in German? Hope you know English, because I don't know German... But I do understand your program. You have a very, very nice utility here. However, I have a question on the LongEnumUsers Function. How do you handle the situation if there are a lot more users, but it's only showing 226 in the listbox. How can I go to next set of users? and the next set? Your response will be deeply appreciated.

Thanks,
VB Developer from USA

Kommentar von Jürg Rutishauser am 02.07.2003 um 07:46

Guten Tag
Bei mir funktioniert dieser Code nicht; Weder eingebunden im Programm, noch das Beispielprojekt. Ich habe herausgefunden, dass "NetServerEnum" den Returncode 2 bekommt. Was bedeutet dieser Returncode?
Auf jeden Fall wird damit ein Fehler angezeigt, nur welcher?

Kommentar von Andy am 23.04.2003 um 17:21

Hi,
starkes Programm! Leider blick ich nicht ganz durch, dafür bin ich zu schlecht! Aber eigentlich such ich auch etwas anderes: Ich möchte ein Programm/Funktion, die alle Pcs im Netzwerk anzeigt, nich die in der Domäne.
Ich benötige es nur für den Hausgebrauch und dort soll es alle Pcs in allen Arbeitsgruppen anzeigen/zurückliefern.
Ich brauche auch keine Infos, die ips reichen.
Hat jemand ne Idee, wie ich daß mache, oder wo ich so etwas finde?
Danke

Kommentar von Bob am 20.04.2003 um 00:16

Das programm läuft leider auch bei mir nicht...
Vielleicht solte man dranschreiben das es nur mit Domänen funzt und nciht mit normalen netzwerken.

Kommentar von Doerfel am 17.02.2003 um 13:52

Hat sofort funktioniert. Dass NT Workstations als Server angezeigt werden, ist zwar nicht ganz korrekt, stoert aber nicht weiter, wenn es bekannt ist. Alles in Allem ein flottes und hilfreiches Tool.
Gruss
Ch. Doerfel

Kommentar von Stefan am 11.12.2002 um 13:40

Ich benutze die verwendeten APIs in einem Programm, das alle 15 Sekunden alle Arbeitsstationen im Netzwerk auflistet. Wenn man sich den TaskManager anschaut, fällt auf, dass Windows den Speicher nicht aufräumt...d.h. bei jedem Aufruf der Funktion NetServerEnum nimmt die Speicherbereichsauslastung in meinem Fall um ca. 1 MB (!!!) zu. Innerhalb von ein paar Minuten kann also der Speicher randvoll sein.
Hat jemand eine Lösung für das Problem???

Kommentar von Ruru am 03.11.2002 um 11:06

Es könnte sein das das Programm unter 98 nicht gut läuft, da ich nicht genau weiss ob ale Funktionen in den DLL's auch auf den Betriebsystemen vorhanden sind, sorry, schau unter microsoft.com nach, da steht es eigentlich.
Das mit den Workstation unter NT das sie als Server angezeigt werden müsste ich mir mal ansehen, und den Maximalen Speicherplatz beschränken - keine Ahnung wie das geht. Ich Verweise noch einmal auf die MSDN von microsoft.com, da kann man sich die aktuellsten und passenden Funktionen aussuchen.

Kommentar von Christian am 31.10.2002 um 12:12

Der Titel ist falsch!
Das Prog zeigt alle Rechner in der Domain des Rechners an, von dem es ausgeführt wird.

mfg Christian

Kommentar von am 22.10.2002 um 20:51

Kommentar von nixus am 01.10.2002 um 17:35

Gibt es eine Möglichkeit festzustellen welcher benutzter gerade Internet ist und auf welcher Seite. !!!

Kommentar von Hans Siegmund am 31.07.2002 um 17:41

Wie kann ich den verfügbaren Speicherplatz eines Users mit "maxstorage" einschränken?

Kommentar von Pate am 16.07.2002 um 12:07

Das Projekt läuft nicht unter Win98! Bzw. bekomme ich die Meldung das mein Pc an keine Domöne angeschlossen ist und ich die Netzverbindung prüfen soll! Ich bin aber definitiv an einer Domäne angemeldet! Auch die Netzwerkverbindung besteht, da ich dieses Projekt auf unserem Server liegen habe und es auch von dort gestartet habe!

Kommentar von Neurieser Franz-Georg am 11.06.2002 um 14:29

An und für sich ein sehr gutes Programm, aber warum werden Workstations unter NT als Server angezeigt ???

Kommentar von Turbo24prg am 24.05.2002 um 20:58

Mir ist der Code zu schwer gibt es denn nicht noch einfachere Beispiele und Codes. Bitte helft mir - dringend!

Kommentar von Ruru am 29.04.2002 um 09:17

Diese Info ist zu dürftig. Leider habe ich kein XP, so das ich nicht die Ursache herausfinden kann. Versuche mal den Unterschied herauszufinden

Kommentar von cromec am 14.04.2002 um 19:41

Bei mir stürtzt das Programm ab. VB 6.0 - Win XP Pro.

Kommentar von Xelion am 12.04.2002 um 11:54

nein bin ich blöd!!!! schion gefunden! ich habe nur nicht gescrollt!

Kommentar von Xelion am 12.04.2002 um 11:53

wo lade ich das denn runter???

Kommentar von Ruru am 08.03.2002 um 13:18

Es sind ziemlich viele Controlls um sie alle aufzuzählen. Auserdem gibt es auch Images in den Imagelisten. Darum empfehle ich das Projekt komplett herunterzuladen.
Ausserdem wird in diesem Projekt noch das Arbeiten mit Treeview mittels Drag Drop demonstriert.

Kommentar von ralph am 02.03.2002 um 15:28

es waere nett, wenn bei den beispielen immer dabeistehen wuerde, welche objekte auf den formularen erwartet werden.
ich habe ein listview mit dem namen "srvlist" erstellt, aber das scheint noch nicht alles zu sein, das das programm jetzt mir der meldung "ungueltiger eigenschaftswert" in zeile 20 ( xItem.SubItems(1) = ServerList.List(x).Comment) abbricht.