Ich habe eine Windows Forms-App, die auf einem Computer ausgeführt wird, der sich nicht in einer Domäne befindet, der eine Datei vom lokalen Dateisystem in einen UNC-Pfad verschieben muss. Ich habe einen Benutzernamen und ein Passwort für diesen Pfad. Ich frage mich, gibt es eine Möglichkeit, dies direkt zu tun, ohne den Befehl net.exe
auszuführen?
Idealerweise müsste ich kein Laufwerk zuordnen.
Die akzeptierte Antwort zu dieser Frage hier scheint es, als wäre es wert, sich zu informieren; Es schlägt vor, die Win32-API-Funktion WNetUseConnection zu verwenden.
Von MSDN:
Die Funktion WNetUseConnection macht a Verbindung zu einer Netzwerkressource. Das Funktion kann ein lokales Gerät umleiten zu einer Netzwerkressource.
Was zu erreichen scheint, was Sie suchen, ohne net.exe
zu erwähnen. Hilft das?
Sie können dazu WNetAddConnection verwenden. Du musst pInvozieren. Der folgende Code funktionierte für mich, nachdem ich die pInvoke-Deklarationen eingerichtet hatte. Der zweite Codeblock (unten) enthält die pInvoke-Deklarationen - einfach in eine Klasse einfügen.
%Vor%Sie müssen den folgenden unterstützenden Code in eine Klasse einfügen (aus pInvoke.Net). Stellen Sie sicher, dass Sie Ihrem Code eine usting-Anweisung hinzufügen:
%Vor% %Vor%Ich denke, Sie müssen ein Laufwerk zuordnen. Ich habe noch keinen Weg gefunden. Siehe jedoch diesen Beitrag:
Asp.net Zugriff auf die Netzwerkfreigabe
Die Antwort von jemand anderem wurde akzeptiert, aber ich habe Code in einer anderen Antwort zur Vereinfachung eines Netzlaufwerks gepostet.
Sehen Sie sich diesen Beitrag an. Es verwendet P / Invoke, um Win32 API LogonUser () und Freunde aufzurufen. Es gibt auch einen Beispielcode.
Tags und Links .net c# winforms file-sharing