vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2018
 
zurück
Rubrik: HTML/Internet/Netzwerk · Netzwerk   |   VB-Versionen: VB.NET16.06.08
Netzlaufwerk verbinden und trennen

Zwei Funktionen zum Verbinden und Trennen von Netzlaufwerken unter VB.NET

Autor:   Martin SchügerlBewertung:     [ Jetzt bewerten ]Views:  24.809 
ohne HomepageSystem:  Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Vor kurzem suchte ich nach einen Quellcode, um Netzlaufwerke unter VB 2005 zu verbinden. Da auch auf dieser Seite nur Tipps mit VB5/6 vorliegen, machte ich mich auf die Suche danach. Im Internet habe ich nun Code dazu gefunden, den ich jetzt hier stark verändert und mit Kommentaren versehen zeigen möchte:

' Benötigte API-Deklarationen
Const RESOURCETYPE_DISK = &H1
 
Public Structure NETRESOURCE
  Public dwScope As Integer
  Public dwType As Integer
  Public dwDisplayType As Integer
  Public dwUsage As Integer
  Public lpLocalName As String
  Public lpRemoteName As String
  Public lpComment As String
  Public lpProvider As String
End Structure
 
Private Declare Function WNetAddConnection2 Lib "mpr.dll" _
  Alias "WNetAddConnection2A" ( _
  ByRef lpNetResource As NETRESOURCE, _
  ByVal lpPassword As String, _
  ByVal lpUserName As String, _
  ByVal dwFlags As Integer) As Integer
 
Private Declare Function WNetCancelConnection2 Lib "mpr.dll" _
  Alias "WNetCancelConnection2A" ( _
  ByVal lpName As String, _
  ByVal dwFlags As Integer, _
  ByVal fForce As Integer) As Integer
''' <summary>
''' Netzlaufwerk verbinden
''' </summary>
''' <param name="buchstabe">Laufwerksbuchstabe</param>
''' <param name="freigabename">Freigabename</param>
Public Function MapDrive(ByVal buchstabe As String, _
  ByVal freigabename As String) As Boolean
 
  Dim nr As NETRESOURCE    ' Netzlaufwerk-Objekt (siehe Struktur)
  Dim username As String   ' Username für die Netzwerkresource
  Dim password As String   ' Passwort für die Netzwerkresource
  Dim cntresult As Integer ' Resultat des Verbindens
 
  ' nr ist das neue Netzlaufwerk der NETRESOURCE Struktur:
  nr = New NETRESOURCE
 
  ' Überprüfen, ob der Laufwerkbuchstabe schon vorhanden ist,
  ' wenn ja dann Funktionen beenden.
  If Not buchstabe.EndsWith(":") Then buchstabe = buchstabe & ":"
  Dim sDrives As String = Join(System.IO.Directory.GetLogicalDrives(), "")
  If sDrives.Contains(buchstabe) Then Return False
 
  ' Dem Objekt nr übergeben wir jetzt die wichtigen Eigenschaften:
  With nr
    ' Freigabename setzt sich zusammen aus dem 
    ' Computernamen und dem Freigabename
    ' Bsp: \\meincomputer\freigabe1
    .lpRemoteName = freigabename
    ' Der gewünschte Laufwerksbuchstabe
    .lpLocalName = buchstabe
  End With
 
  ' Evtl. Username und Passwort, sollte die Freigabe gesichert sein.
  username = Nothing
  password = Nothing
 
  ' Typdefinition des Netzlaufwerk (eben Laufwerk)
  nr.dwType = RESOURCETYPE_DISK
 
  ' Die eigentliche Funktion, das Verbinden. 
  ' Das Ergebnis wird in cntresult abgespeichert.
  ' Bei Erfolg kommt als Return 0
  cntresult = WNetAddConnection2(nr, password, username, 0)
  If cntresult = 0 Then
    ' Wenn null, war das Verbinden erfolgreich,
    Return True
  Else
    ' anderfalls nicht.
    Return False
  End If
End Function
''' <summary>
''' Netzlaufwerk trennen
''' </summary>
''' <param name="buchstabe">Netzlaufwerksbuchstabe</param>
Public Function UnMapDrive(ByVal buchstabe As String, _
  Optional ByVal ForceDisconnect As Boolean = True) As Boolean
  Dim unctrc As Integer ' Result des Trennes
 
  ' Die eigentliche Funktion des Netzlaufwerks trennen.
  If Not buchstabe.EndsWith(":") Then buchstabe = buchstabe & ":"
  unctrc = WNetCancelConnection2(buchstabe, 0, ForceDisconnect)
  If unctrc = 0 Then
    ' Wenn null, war die Funktion erfolgreich
    Return True
  Else
    ' Andernfalls war die Funktion nicht erfolgreich.
    Return False
  End If
End Function

Beispiel für den Aufruf:

' Netzlaufwerk verbinden
Dim sDrive As String = "O:"
If MapDrive(sDrive, "\\Rechnername\Freigabe") = True Then
  MsgBox("Laufwerk verbunden (" & sDrive & ")")
End If
' Laufwerk trennen
If RemoveNetworkDrive(sDrive, True) = True Then
  MsgBox("Laufwerk " & sDrive & " wurde erfolgreich getrennt")
End If

Dieser Tipp wurde bereits 24.809 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Aktuelle Diskussion anzeigen (2 Beiträge)

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2018 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel