Hallo zusammen,
wie kann man ein Netzwerklaufwerk verbinden und nach dem Schreiben einer Datei auf dieses wieder trennen ?
Danke schonmal.
Gruss Chris
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
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 ?
Hi!
Ich meine Damit einfach den Laufwerksbuchstaben des Netzlaufwerkes anzugeben, also
statt
F:\bla\
X:\bla\
Code-Hacker
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
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
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
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