Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

VB: Liste der Freigaben in LAN

Anonym / 5 Antworten / Flachansicht Nickles

Hallo!

Ich nutze Visual Basic 6.
Ich suche nach einem Weg, eine Liste aller freigegebenen Ordner eines PCs in einem LAN anzuzeigen. Sprich:
Ich habe z.B. rechts eine ListBox mit Computernamen und wenn ich einen auswähle wird mir rechts in einer Directory-Box seine Freigabe angezeigt.
Wie wird das gemacht?

Links zu diesem Thema wären auch toll.

Danke im Voraus.

PCO

bei Antwort benachrichtigen
T-Rex Anonym „VB: Liste der Freigaben in LAN“
Optionen

Wenn Du meinst, daß Du diese Ordner erst mal als Laufwerk anbinden möchtest, ist das kein Problem. Dann kannst Du da wie auf lokale Festplatten zugreifen (natürlich was langsamer).

Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" ( _
   lpNetResource As NETRESOURCE, _
   ByVal lpPassword As String, _
   ByVal lpUserName As String, _
   ByVal dwFlags As Long _
) As Long

Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" ( _
   ByVal lpName As String, _
   ByVal dwFlags As Long, _
   ByVal fForce As Long _
) As Long

Private Declare Function WNetGetConnection Lib "mpr" Alias "WNetGetConnectionA" ( _
   ByVal strLaufwerk As String, _
   ByVal strFreigabe As String, _
   intFreigabe As Long _
) As Long

Private Type tNETRESOURCE
   dwScope As Long
   dwType As Long
   dwDisplayType As Long
   dwUsage As Long
   lpLocalName As String
   lpRemoteName As String
   lpComment As String
   lpProvider As String
End Type

Private Const RESOURCETYPE_DISK = &H1

Public Function Trenne_Freigabe(strLaufwerk As String) As Integer
   '   Diese Funktion trennt eine Freigabe.
   '   Sollte es nicht klappen, wird vbNo zurückgegeben, sonst vbYes
   '   Speicher reservieren
   Dim ReturnValue As Long

   '   Rückgabewert setzen
   Trenne_Freigabe = vbNo

   '   Wenn ein Laufwerk übergeben wurde, dann weitermachen
   If (Len(strLaufwerk) = 2) Then
      '   Verbindung kappen
      ReturnValue = WNetCancelConnection2(strLaufwerk, 0, 0)
      '   Wenn erfolgreich, dann Rückgabewert neu setzen
      If (ReturnValue = 0) Then
         Trenne_Freigabe = vbYes
      End If
   End If
End Function

Public Function Verbinde_Freigabe(strLaufwerk As String, strFreigabe As String, Optional strUserName As String, Optional strUserPassWd As String) As Integer
   '   Diese Funktion verbindet eine Freigabe mit dem lokalen Rechner
   '   Ist die Funktion erfolgreich, wird vbYes zurückgegeben, sonst vbNo
   '   Speicher reservieren
   Dim NetRes As tNETRESOURCE
   Dim ReturnValue As Long

   '   Rückgabewert setzen
   Verbinde_Freigabe = vbNo

   '   Wenn ein Laufwerk übergeben wurde, dann weitermachen
   If (Len(strLaufwerk) = 2) Then
      '   Resourcen setzen
      NetRes.lpRemoteName = strFreigabe
      NetRes.lpLocalName = strLaufwerk
      NetRes.dwType = RESOURCETYPE_DISK

      '   Verbindung herstellen
      ReturnValue = WNetAddConnection2(NetRes, strUserName, strUserPassWd, 0)

      '   Wenn erfolgreich, dann Rückgabewert neu setzen
      If (returnvalue = 0) Then
         Verbinde_Freigabe = vbYes
      End If
   End If
End Function

Public Sub Lese_Netzlaufwerke()
   '   Speicher reservieren
   Dim ReturnValue As Long
   Dim sNetname As String
   Dim iLen As Long
   Dim iIdx As Integer
   Dim sDrive As String

   '   Alle Netzwerkverbindungen anzeigen
   For iIdx = Asc("D") To Asc("Z")
      sDrive = Chr$(iIdx) & ":"
      sNetname = Space$(255)
      iLen = Len(sNetname)
      ReturnValue = WNetGetConnection(sDrive, sNetname, iLen)
      If (ReturnValue = 0) Then
         Debug.Print sDrive & Left(sNetname, iLen)
      End If
   Next iIdx
End Function

 GrüßeT-Rex 
bei Antwort benachrichtigen