Laden...

Netzwerklaufwerk verbinden

Erstellt von rockynl vor 20 Jahren Letzter Beitrag vor 20 Jahren 5.247 Views
R
rockynl Themenstarter:in
53 Beiträge seit 2004
vor 20 Jahren
Netzwerklaufwerk verbinden

Hallo zusammen,

wie kann man ein Netzwerklaufwerk verbinden und nach dem Schreiben einer Datei auf dieses wieder trennen ?

Danke schonmal.

Gruss Chris

V
842 Beiträge seit 2003
vor 20 Jahren

Hi!

Ich denke mal das geht mit Sockets. Such mal hier auf dem Board, wir hatten zu Sockets mal ein Tutorial. Oder kann man auf die nicht einfach per Laufwerksbuchstaben zugreifen?

Code-Hacker

R
rockynl Themenstarter:in
53 Beiträge seit 2004
vor 20 Jahren

Original von Code-Hacker
Ich denke mal das geht mit Sockets. Such mal hier auf dem Board, wir hatten zu Sockets mal ein Tutorial.

Danke, werd ich mal tun.

Original von Code-Hacker
Oder kann man auf die nicht einfach per Laufwerksbuchstaben zugreifen?

Die Verbindung soll ja aus dem Programm heraus erstellt werden und dann von diesem wieder getrennt werden. Oder was meintest du damit ?

V
842 Beiträge seit 2003
vor 20 Jahren

Hi!

Ich meine Damit einfach den Laufwerksbuchstaben des Netzlaufwerkes anzugeben, also
statt
F:\bla\
X:\bla\

Code-Hacker

R
rockynl Themenstarter:in
53 Beiträge seit 2004
vor 20 Jahren

Hallo nochmal 🙂

Hab das ganze mal so versucht



string str_Dateipfad = "\\\\ZBEServer\\PCs";

StreamWriter writer = new StreamWriter(str_Dateipfad + str_PCName + ".csv");
writer.WriteLine(str_Benutzername + "," + str_IP + "," + str_PNr);
writer.Close();


Kann mich aber nicht verbinden, da der Server in ner anderen Domain liegt etc...
Muss also ein Passwort angeben.
Hast du da ne Idee ?

Gruss Chris

P
939 Beiträge seit 2003
vor 20 Jahren

Zum Arbeiten mit Netzlaufwerken gibt es den Konsolenbefehl net use. Den könntest du über System.Diagnostics.Process auch aus deinem Programm heraus verwenden. Über direkte Interop-Aufrufe wäre es eleganter. Weiss ich aber nicht ob und wie das geht.

Gruß
Pulpapex

Edit: ich hab mal im Netz nach URI und UNC gesucht. Auf der Apache-Seite gibt es eine Liste mit den gebräuchlichsten Formaten.
http://jakarta.apache.org/commons/sandbox/vfs/filesystems.html

Das CIFS URI-Format scheint das richtige sein. Vielleicht wird es in .Net sogar unterstützt. 😉

CIFS
Provides access to the files on a CIFS server, such as a Samba server, or a Windows share.

URI Format
smb://[username[:password]@]hostname[:port][absolute-path]

Examples
smb://somehost/home

R
rockynl Themenstarter:in
53 Beiträge seit 2004
vor 20 Jahren

Danke für die Antwort !

Das mit dem net use Befehl hatte ich auch schon im Kopf, wußte aber nicht das man den in C# auch benutzen kann.

In der Konsole gebe ich folgendes ein und das Share wird angebunden.


net use z: \\ZBEServer\PCs Test /User:adapt\Tester 

Im Programm wollte ich es nun so machen, aber es klappt nicht ...


ProcessStartInfo psi = new ProcessStartInfo(); 
psi.FileName = "cmd.exe"; 
psi.Arguments = "net use z: \\\\ZBEServer\\PCs Test /User:adapt\\Test"; 
psi.UseShellExecute = false; 
psi.CreateNoWindow = true; 

Process p = new Process(); 
p.StartInfo = psi; 
p.Start();

Für einen Tipp wäre ich sehr dankbar 🙂

Gruss Chris

V
842 Beiträge seit 2003
vor 20 Jahren

Hi!

Wozu cmd.exe? Ruf doch direkt net.exe auf, schließlich ist es auch ein Programm:

ProcessStartInfo psi = new ProcessStartInfo("net.exe", "use z: \\\\ZBEServer\\PCs Test /User:adapt\\Test");
sendInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(sendInfo).WaitForExit();

Wenn du noch ein Beispiel willst. So habe ich z.B. net send verwendet:

// "net send" wird aufgerufen um eine Nachricht zu versenden
sendInfo = new System.Diagnostics.ProcessStartInfo("net.exe","send \"" + empfaenger + "\" \"" + sendText + "\"");
sendInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
System.Diagnostics.Process.Start(sendInfo).WaitForExit();

Code-Hacker

R
rockynl Themenstarter:in
53 Beiträge seit 2004
vor 20 Jahren

Hat alles geklappt !
Danke nochmal !