Getagged : Programmierung

Authentifizierung an Netzwerkfreigaben via C#

Eine Mail erreichte mich heute, in der ich gefragt wurde, wie man zB. mein Programm easyLiveSync, oder eigene Implementierungen dazu bewegen könnte, auf Netzlaufwerke bzw. Freigaben zuzugreifen, bei denen sich explizit angemeldet werden muss. Ursache aus der Mail war, dass die Synchronisierung von bzw. auf Netzlaufwerke geschehen sollte, diese aber des Öfteren im Explorer als “Getrennt” angezeigt werden, obwohl ein Doppelklick darauf die Verbindung aufbaut. Ebenso, wenn das Laufwerk getrennt ist, wird aus anderen Programmen heraus der Zugriff verweigert.

Ich bin ein Freund von Boardmitteln, wo sie denn sinnvoll und zeiteinsparend sind. Und unter C# und Co. kann man auch die Boardmittel nutzen, um zumindest vorerst eine Verbindung unter Nutzung von Nutzer und Passwort auf eine Freigabe zu erreichen.

Der Befehl unter Windows lautet: net use SERVERNAME\IPC$ /user:USERNAME PASSWORD. Alternativ kann man auch die Freigabe vorher auf ein Laufwerksbuchstaben mappen mittels: net use FreierLaufWerksbuchstabe\\SERVERNAME\FREIGABE /user:USERNAME PASSWORD. Danach kann man über den neu belegten Laufwerksbuchstaben auf die entfernten Daten zugreifen.

Will man dies nun via C# realisieren, existieren zwar einige Boardmittel, aber mittels eines Sechszeilers geht das Ganze recht einfach von der Hand. Folgender Quellcode-Ausschnitt zeigt dies auf:

ProcessStartInfo psi = new ProcessStartInfo(“net”,”use “ + SERVERNAME + @”\IPC$ /user:” + USERNAME + ” ” + PASSWORD);
Process proc = new Process();
proc.StartInfo = psi; proc.Start();
proc.WaitForExit();
proc.Close();

SERVERNAME, USERNAME und PASSWORD sind in diesem Fall Variablen des Typs string. Danach kann man problemlos den Zugriff via UNC auf die Freigabe des Server realisieren und seine “Dummheiten” mit anstellen. Ebenso ist durch Abänderung der ersten Quellcode-Zeile die Anbindung auf ein Laufwerksbuchstaben möglich:

ProcessStartInfo psi = new ProcessStartInfo(“net“,“use Laufwerk: \\\\“ + SERVERNAME + @“\Freigabe /user:” + USERNAME + ” “ + PASSWORD);

Der Rest sollte dann nach Schema F ablaufen.

 

Von “Rinbreaken” und “drufforn”

Das englische Fachbegriffe und Wörter immer mehr in unseren Sprachgebrauch Einfluss finden, sollte Jedem schon aufgefallen sein. Schlimm wird es nur, wenn diese Begriffe in Konstruktionen auftauchen, die zwar vielleicht einen Sachverhalt beschreiben sollen, aber völlig missgebildet sind. Heute erst wieder erlebt:

Na denn musste zur Laufzeit in das Programm rinbreaken und dann 0×55 uff den Wert drufforn und dann andeste erst einmal das Ganze.

Rinbreaken würde ja noch jeder verstehen, aber drufforn oder anden? Wenn man weiß, was es bedeutet, dann ist es ja nicht schwer – eine OR (Oder)-Operation (drufforn = drauf ORn) auf einen Wert bzw. diesen Wert logisch AND(Und)-Verknüpfen (anden).

Aber muss denn das Ganze so sein? Nicht nur, dass meine Ohren bei derartiger Vergewaltigung der Sprache ständig klingeln, zusätzlich verbreitet sich diese Geräuschschöpfung immer weiter in den alltäglichen Sprachgebrauch. Und mit Sprache hat das Ganze eigentlich auch gar nichts mehr zu tun – eher mit Geräuschübertragung und unnützem und störenden Grundrauschen.

Naja – Minus mal Minus ergibt eben Plus …