Dateien übers Netzwerk kopieren

woezelmann

Mitglied
Hallo,

ich schreib gerade ein Programm, welches unter anderen Dateien übers Netzwerk auf einen anderen Computer kopieren soll. Hab auf dem Computer einen Benutzer eingerichtet, der Vollzugriff auf ein freigegebenes Verzeichnis hat. Unter Windows öffnet sich ein Authorisierungsfenster und dann kann ich die Dateien kopieren.

mit File.Copy() krieg ich aber immer eine Fehler, dass auf das Verzeichnis nicht zugegriffen werden kann.
Geht's irgendwie eine Authorisierung anzugeben?

Danke im Voraus

woezelmann
 
Hallo woezelmann,

du must bevor du eine Datei mit File.Copy auf einen anderen
kopieren kannst natürlich erst ein Netzlaufwerk/Verzeichnis Connecten.
Es reicht nicht aus das es den Benutzer gibt. Das Laufwerk muss
freigegeben sein (für den angelegten Benutzer) und vorher verbunden
werden.

Das geht in .NET bspw. so.

Bei dem Beispiel wird geprüft ob die Verbindung mit Schreibrechten schon
da ist.

Code:
#Region " Network via API "

Private Const CONNECT_INTERACTIVE As Long = &H8

Private Const RESOURCETYPE_DISK As Long = &H1

Friend Declare Function WNetAddConnection2 Lib "mpr.dll" Alias _

"WNetAddConnection2A" 
(<Runtime.InteropServices.MarshalAs(UnmanagedType.Struct)> ByRef 
lpNetResource _

As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, _

ByVal dwFlags As Integer) As Integer

<StructLayout(LayoutKind.Sequential)> 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 WNetCancelConnection2 Lib "mpr.dll" Alias _

"WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As _

Integer, ByVal fForce As Integer) As Integer

Public Shared Function NetConnect(ByVal path As String, ByVal user As 
String, ByVal password As String) As Boolean

Try

Dim w As StreamWriter = File.CreateText(path & "\test.txt")

w.WriteLine("test")

w.Flush()

w.Close()

File.Delete(path & "\test.txt")

Return True

Catch ex As Exception

End Try



Dim nr As New NETRESOURCE()

nr.dwType = RESOURCETYPE_DISK

nr.lpRemoteName = path

If WNetAddConnection2(nr, password, user, CONNECT_INTERACTIVE) = 0 Then

Return True

End If

End Function

Public Shared Sub NetDisConnect(ByVal path)

Dim nr As New NETRESOURCE()

nr.dwType = RESOURCETYPE_DISK

nr.lpRemoteName = path

WNetCancelConnection2(path, 0, -1)

End Sub

#End Region
 
Hmmm, hab gerade ein ziemliches Problem damit, das Ganze in C# umzusetzten. Hast du zufällig dafür auch code
 
Ike noch mal ...

Habs jetzt so weit hingekriegt, eine Verbindung aufzubauen. Da gibts bloß noch eine Sache: Sobald ich als Benutzername mehr als einen Buchstaben übergebe, kommen nur irgendwelche chinesischen Zeichen ein. Bei einem Buchstaben gehts...

Hat schon mal jemand so was gehabt ?

woezelmann
 
Hehe, bin selbst drauf gekommen:

hab WNetAddConnection2W (Unicode) anstatt von WNetAddConnection2A (ANSI) benutzt :-(
 

Neue Beiträge

Zurück