Netzshare verbinden und trennen

31/05/2009 - 20:30 von Stephan Stone | Report spam
Hallo zusammen,

Hab nochmal eine Frage zu einem Problem, dass ich mit Google schon einmal
gelöst gedacht hatte.
Ich habe ein Programm dass Daten (Access DB und ASCII Files) von
verschiedenen Netzwerkshares kopiert bzw ausließt
und anschließend alle x min eine Anzeige aktuallisiert. Die Shares sind mit
Benutzer und Pass freigeschalten.
Diese Info übernehme ich aus einer Cfg Datei vom Programm.

Verbinden tu ich den Share aktuell so:

private void Netz_LW_verbinden(string LW, string share, string user,
string pass)
{
ProcessStartInfo psi = new ProcessStartInfo();
Process proc = new Process();

Netz_LW_trennen(LW);

psi.FileName = "net";
psi.Arguments = "use " + LW + " " + share +
" /user:" + user + " " + pass;
proc.StartInfo = psi;
proc.Start();
proc.WaitForExit();
proc.Close();
}

Die Lösung in Etwa hab ich Online mal gefunden und funktioniert auch.
Mein Problem an der Lösung ist jetzt, dass es über ein Process im
Vordergrund làuft.
Hat mich beim Programmstart und beim testen nciht wirklich gestört, aber
wenn es dann lànger làuft das Prog und man es minimiert und was anderes am
PC arbeitet, stören natürlich alle paar min die Shell Fenster für die Share
Verbrindung.
Kann leider die Verbindung nicht erhalten, da ich viele Server abklappern
muss und dann dem User alle LW Buchstaben streitig mach.
Das Programm soll stàndig im Hintergrund laufen.

Es muss doch eigentlich eine .NET Klasse geben, mit der man eine Datei von
einem Netzshare mit User Autentifizierung
kopieren kann ohne gleich ein LW zu verbinden oder?
Oder kann man den Proc vielleciht als Backround Process deffinieren um so
den User die Fenster gar nicht zu zeigen?

Müsste allerdings auch eine OLEDB Verbindung zu einer Access DB auf einem
Share aufbauen.
Da das aber nur ein Share ist könnte ich den am schluss mit dem LW verbunden
lassen als Notlösung.

Hat jemand eine Idee?
Bin für jede Hilfe Dankbar.

MFG
Stephan
 

Lesen sie die antworten

#1 Frank Dzaebel
31/05/2009 - 21:12 | Warnen spam
Hallo Stephan,

Verbinden tu ich den Share aktuell so:
psi.FileName = "net";
psi.Arguments = "use " + LW + " " + share +
Es muss doch eigentlich eine .NET Klasse geben, mit der man eine Datei von
einem Netzshare mit User Autentifizierung kopieren kann ohne gleich ein LW
zu verbinden oder?



ja, schön ist das mit "net use" nicht, denn weiterhin,
wenn das Laufwerk schon gemappt ist muss ggf. auf
Fehler reagiert werden, evtl. muss die aufpoppende unschöne
DOS-Box etc. beseitigt werden u.a.

Also unter .NET möglich z.B. über WSH:
http://groups.google.de/group/micro...55ffb90b1b

oder z.B. über PInvoke durch API-Methoden aus der "mpr.dll"

[Map Network Drive (API)]
http://www.codeproject.com/csharp/mapnetdrive.asp

auch WMI wàre eine Möglichkeit, ist aber von der
Performance her normal schlechter:

[How to create a Share Folder]
http://social.msdn.microsoft.com/Fo...bb77b230df


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen