| |
VB.NET - Ein- und UmsteigerWin10 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. | |
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 | |
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 | |
| 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 |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|