C# Zugriff auf administrative Freigabe

0hrpheus

Cadet 2nd Year
Registriert
Mai 2005
Beiträge
21
Hallo,
ich möchte auf mehrere Server in einem lokalen Netzwerk dieselbe Datei hochladen. (Soll ein Updater werden)
Allerdings steht mir dazu nur die administrative Freigabe (C$) (und damit die entsprechenden Benutzernamen/Kennwörter für die Server) zur Vefügung.

Hier Aufruf für die Kopierfunktion:
Code:
File.Copy(@"c:\tmp.txt", @"\\server1\c$\tmp.txt", true);

das Problem ist nun, dass ich keine Rechte habe auf den Server zu zugreifen.

Da ich allerdings Benutzername und Passwort dieses kenne frage ich mich, wie ich dennoch darauf zugreifen kann.
Ich habe schon ein bisschen was zu Impersonate gelesen, aber wenn ich das richtig verstanden habe, muss ich dazu lokal für jeden Server einen Benutzer mit Passwort anlegen, was allerdings in meinem Fall zu viel aufwand führt.

Wenn man normal über den Explorer auf die administrative Freigabe zugreift, wird man zur Eingabe von Bentzername und Passwort aufgefordert und hat anschließend vollen Zugriff auf die Freigabe.
Wenn es also hier geht muss es auch irgendwie in einem anderen Programm gehen.
Vlt. kann mir ja einer von euch weiterhelfen, denn im Internet habe ich nicht wirklich viel brauchbares gefunden.

mfg 0hrpheus
 
hi,

net use <share> /USER:<domäne>\<user> /PASS:

das pw würde aber so plain in der batch stehen... du kannst das ganze aber auch als dienst laufen lassen und den diensteuser auf einen berechtigten user setzen. dann musst du keine userangaben machen, und kannst dir das alles sparen.

weitere vorschläge würden mich auch interessieren.

grüße

EDIT: c# hab ich natürlich überlesen ;). Aber man kann sicher entsprechende externe befehle aufrufen über umwege, odää?
 
Zuletzt bearbeitet:
Du kannst auf die komplette Kommandozeile von Windows auch über C# (.NET allgemein) zugreifen. Eine Möglichkeit wäre, dass du dir vorher das besagte Laufwerk auf den Rechner mapst, von dem das Programm aufgerufen wird. Wenn du das Laufwerk nämlich bereits geshared hast, dann sollte auch dein Tool keine Probleme mit den Rechten haben.
 
Zuletzt bearbeitet:
Sev7eNup schrieb:
Du kannst auf die komplette Kommandozeile von Windows auch über C# (.NET allgemein) zugreifen. Eine Möglichkeit wäre, dass du dir vorher das besagte Laufwerk auf dem Rechner mapst, von dem das Programm aufgerufen wird. Wenn du das Laufwerk nämlich bereits geshared hast, dann sollte auch dein Tool keine Probleme mit den Rechten haben.

Das Programm läuft ja auf meinem lokalen Rechner und ich will auf die Server Updaten,
aber vielleicht kann ich von jedem Server einzeln die Ordner mappen und dann die sachen da reinkopieren ..

d2boxSteve schrieb:
Hi,

in C# geht das mit impersonation (Benutzerwechsel während das Programm läuft). Du musst im Programm kurzzeitig auf Admin wechseln, dann kopieren. Siehe:

http://msdn.microsoft.com/en-us/library/5z4b2h41

Gruß,

d2boxSteve
Das Problem bei Impersonation ist (wie im 1. Post geschrieben) dass der Benutzer auf dem lokalem Rechner existieren muss.
Wenn ich aber beispielsweise auf 20 Server die Dateien hochladen muss, die auch alle unterschiedliche Benutzer/Kennwörter haben müsste ich erst diese 20 Benutzer lokal anlegen, was aber einwenig Blödsinn wäre.
Wenn man Impersonation auch verwenden kann, ohne einen lokalen Nutzer anlegen zu müssen wäre ich sehr dankbar, wenn du mir erklären könntest wie das geht ..
 
Genauso meinte ich das. Du kannst dir die Server einzeln mappen und mit ner Schleife nach und nach die Datei hochladen. Natürlich macht es wenig Spaß, wenn es zu viele Server sind...
 
Naja das mappen könnte ich auch in meinem Programm machen, da kann ich wenigstens auch gleich wieder das Laufwerk trennen, aber ich kann mir nicht vorstellen, dass es nur so gehen sollte ..

Theoretisch sollte es doch reichen, wenn ich beim zugriff auf die datei den benutzernamen und das kennwort von dem server angebe ..
 
Zurück
Oben