vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2019
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Win10 Netzlaufwerke verbinden/trennen die xte 
Autor: Volker Bunge
Datum: 10.06.19 12:00

Hallo zusammen,

ich möchte eigentlich nur von meinem Client-PC aus einige Verzeichnisse vom Homeserver als Netzlaufwerk verbinden/trennen.

Habe mich jetzt schon durch das Netz gewühlt und auch einiges gefunden. Leider klappen die Möglichkeiten alle nicht.

Das einzige. das so einiger massen klappt, ist das Erstellen einer BATCH-Datei mit dem Befehl Net Use. Dies aber auch nur, wenn ich die BATCH über den Explorer aufrufe, nicht aus dem VB-Net Programm heraus.

Die anderen Lösungen bringen entweder die eingestellte Fehlermeldung oder tun tatsächlich nicht dass, was sie sollen.

Hier erst einmal der Batchcode der so halb funktioniert
    Public Function Netzlaufwerke_verbinden(ByVal LocalDrive As String, ByVal _
      NetworkPath As String) As Boolean
        'NetworkPath = Replace(NetworkPath, " ", "%20")
        MsgBox("LocalDrive: " & LocalDrive & "   NetworkPath: " & NetworkPath)
        'Exit Function
 
        Dim arg As String
        arg = "Net.exe use " & LocalDrive & " " & Chr(34) & NetworkPath & Chr( _
          34) '& " /persistent:yes "
 
        Dim encoding As Encoding = Encoding.GetEncoding(850) ' GetEncoding( 
        ' "ISO-8859-1")
        Dim file As System.IO.StreamWriter
        file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\Nv.bat", _
          False, encoding) ' c:\temp\Netzlaufwerk_verbinden.bat
        file.WriteLine("C:")
        file.WriteLine("CD \temp")
        file.WriteLine(UCase("Net.exe use " & LocalDrive & " /delete"))
        file.WriteLine(UCase(arg))
        file.WriteLine("Pause")
        file.Close()
 
        ' Diese zweite deaktivierte Möglichkeit beim Verbinden klappt auch nicht 
        ' Nun noch die BATCH - Datei ausführen
        System.Diagnostics.Process.Start("c:\temp\Nv.bat")
 
        '''Dim processInfo As New System.Diagnostics.ProcessStartInfo()
 
        '''processInfo.FileName = "C:\WINDOWS\system32\net"
 
        '''processInfo.Arguments = "use " & LocalDrive & " " & Chr(34) & 
        ' NetworkPath & Chr(34) '"use X: \\ MYPC \ Ordner / USER: MYPC \ TEST P" & _
        "@ ssw0rd"
 
        '''System.Diagnostics.Process.Start(processInfo)
 
    End Function
    Public Function Netzlaufwerke_trennen(ByVal LocalDrive As String) As Boolean
        MsgBox("LocalDrive: " & LocalDrive)
        'Exit Function
 
        Dim arg As String
        arg = "Net.exe use " & LocalDrive & ": /delete"
 
        Dim encoding As Encoding = Encoding.GetEncoding(850) ' GetEncoding( 
        ' "ISO-8859-1")
        Dim file As System.IO.StreamWriter
        file = My.Computer.FileSystem.OpenTextFileWriter("c:\temp\Nt.bat", _
          False, encoding) ' c:\temp\Netzlaufwerk_verbinden.bat
        file.WriteLine("C:")
        file.WriteLine("CD \temp")
        file.WriteLine(UCase(arg))
        file.WriteLine("Pause")
        file.Close()
 
        ' Nun noch die BATCH - Datei ausführen
        System.Diagnostics.Process.Start("c:\temp\Nt.bat")
    End Function
Da alle Codes aus dem Netz doch schon so einige Jahre alt sind, kann es sein, dass sich da etwas geändert hat?

Zu meinem System
Programm: VB-Net 2017 Studio
Client-Rechner: Windows 10 / 7 Rechner
Homeserver: ACer H340 mit Windows Home Server Service Pack 2 (also auch schon so einige Jahre alt)
Neuer Server: ein alter HP 8300 Elite Rechner mit Windows 10 64 Bit (soll später mal den Acer ablösen, noch nicht damit getestet)

Wie gesagt, die BATCH Datei läuft soweit (über den Explorer), also können die Befehle nicht falsch sein.

Noch eine Frage hierzu: Da ich ja mit UNC-Pfadangaben arbeite, kann ich auch irgendwie Verzeichnisse verbinden, die Umlaute bzw. Leerzeichen und Bindestriche enthalten? Wenn ich die Verzeichnisse manuell verbinde, dann sind auch Umlaute, Leerzeichen und Bindestriche möglich.

Vielen Dank schon einmal im Voraus und noch einen schönen Feiertag.

Gruß

Volker

Beitrag wurde zuletzt am 10.06.19 um 12:04:07 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Win10 Netzlaufwerke verbinden/trennen die xte 
Autor: effeff
Datum: 11.06.19 17:31

Ich habe mit einer Batch-Datei keine Probleme:

Public Class Form1
 
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
      Handles Button1.Click
 
        Dim Laufwerksbuchstabe As String = TextBox1.Text 'Eingabe z. B. J:
        Dim Share As String = TextBox2.Text 'Eingabe z. B. 
        ' "\\Rechnername\Freigabe"
 
        If Netzlaufwerke_verbinden(Laufwerksbuchstabe, Share) Then
            MessageBox.Show("Der Netzwerkpfad '" & Share & "' wurde dem" & _
              "Laufwerksbuchstaben '" & Laufwerksbuchstabe & "' zugewiesen!")
        Else
            MessageBox.Show("Das Verbinden von '" & Share & "' zu '" & _
              Laufwerksbuchstabe & "' hat nicht funktioniert!")
        End If
 
    End Sub
 
    Public Function Netzlaufwerke_verbinden(ByVal LocalDrive As String, ByVal _
      NetworkPath As String) As Boolean
 
        MsgBox("LocalDrive: " & LocalDrive & "   NetworkPath: " & NetworkPath)
 
        Dim Trennbefehl As String = "Net.exe use " & LocalDrive & "" & _
          "/delete".ToUpper
        Dim Verbindenbefehl As String = "Net.exe use " & LocalDrive & " " & Chr( _
        34) & NetworkPath & Chr(34)
        Dim Batchdatei As String = "c:\temp\Nv.bat"
 
If System.IO.File.Exists(Batchdatei) Then
System.IO.File.Delete(Batchdatei)
End If
 
        Dim file As New System.IO.StreamWriter(Batchdatei)
        file.WriteLine(Trennbefehl)
        file.WriteLine(Verbindenbefehl)
        file.Close()
 
        Process.Start(Batchdatei)
 
        System.Threading.Thread.Sleep(500)
 
        If DriveExists(LocalDrive) Then
            Return True
        Else
            Return False
        End If
 
    End Function
 
    Public Function DriveExists(ByVal sDrive As String) As Boolean
        Try
            Dim Drive As New System.IO.DriveInfo(sDrive)
            Return True
        Catch ex As Exception
            Return False
        End Try
    End Function
 
 
End Class
Solange die Netzwerkpfade in Klammern stehen, sollten Leerzeichen keine Probleme bereiten - ebenso sollten Umlaute keine Probleme machen. Ich würde aber auf jeden Fall auf beides verzichten - wie auch auf bestimmte Sonderzeichen im Pfad.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Win10 Netzlaufwerke verbinden/trennen die xte 
Autor: Volker Bunge
Datum: 11.06.19 21:37

Hallo effeff,

vielen Dank erst einmal für die Rückmeldung.

Habe gerade mal Deinen Code ausprobiert. Mal von einer kleinen fehlenden Leertaste beim löschen des alten Laufwerksbuchstaben, funktioniert Deine Lösung leider bei mir genauso wie meine.

Was mir aber aufgefallen ist, der Inhalt ist zwar der richtige, aber die Bezeichnung ist immer noch die alte (Explorer, F5 gedrückt und dann die linke Seite), wenn ich die Batchdatei über den Explorer starte. Ich habe zwei mal mit unterschiedlichen Verzeichnissen eine Zuordnung für I: gemacht. Die Batch-Anzeigen sind die gleichen, wie bei mir. (Habe hierzu in die Batchdatei nachträglich noch den PAUSE - Befehl eingebaut, damit ich auch was sehe)

Rufe ich dann den Total-Commander auf, ist die Bezeichnung die richtige und der Inhalt auch. Aber auch hier nur nach dem manuellen starten der Batchdatei.

Gut, mit dem Explorer habe ich eh manchmal so meine Probleme, aber komisch das ganze schon.

Gibt es vielleicht noch eine andere Lösung bzw. einen Grund, warum das mit der Batchdatei nicht so funktioniert wie gedacht? (Es muss absolut keine Batchdateilösung sein)

Vielen Dank

Volker
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2019 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