Frage

    

Diese Frage bereits eine Antwort hier:

         

Ich habe eine Windows Forms-Anwendung auf einem Computer ausgeführt wird, die nicht auf einer Domäne ist, die eine Datei aus dem lokalen Dateisystem zu einem UNC-Pfad in der Lage sein muss, sich zu bewegen. Ich habe einen Benutzernamen und ein Passwort für diesen Pfad. Ich frage mich, ist es eine Möglichkeit, dies zu tun direkt mit aus execing dem net.exe Befehl?

Im Idealfall würde ich muß nicht ein Laufwerk.

War es hilfreich?

Lösung

Die akzeptierte Antwort auf diese Frage: hier scheint wie es sich lohnen würde zu suchen; Sie schlägt vor, die Win32-API-Funktion WNetUseConnection .

Von MSDN:

  

Die WNetUseConnection Funktion macht ein   Verbindung zu einer Netzwerkressource. Das   Funktion kann ein lokales Gerät umleiten   zu einer Netzwerkressource.

Was zu tun scheint, was Sie suchen, ohne Erwähnung von net.exe. Ist dies helfen?

Andere Tipps

Sie können WNetAddConnection verwenden, um dies zu erreichen. Sie werden zu pinvoke haben. der folgende Code für mich gearbeitet, nachdem ich die pinvoke Erklärungen einrichten. Der zweite Codeblock (unten) enthält die pinvoke Erklärungen -. Es nur innerhalb einer Klasse halten


        public static void CopyFile(string from, string shareName, string username, string password)
        {
            NETRESOURCE nr = new NETRESOURCE();
            nr.dwType = ResourceType.RESOURCETYPE_DISK;
            nr.lpLocalName = null;
            nr.lpRemoteName = shareName;
            nr.lpProvider = null;

            int result = WNetAddConnection2(nr,  password,  username, 0);
            System.IO.File.Copy(from, System.IO.Path.Combine(shareName, System.IO.Path.GetFileName(from)));
        }


Sie müssen die folgenden unterstützenden Code in eine Klasse einzufügen (von pInvoke.Net genommen). Achten Sie auf ein mit statment, um Ihren Code hinzuzufügen:

using System.Runtime.InteropServices

        [DllImport("Mpr.dll", EntryPoint = "WNetAddConnection2", CallingConvention = CallingConvention.Winapi)]
        private static extern int WNetAddConnection2(NETRESOURCE lpNetResource, string lpPassword,  
                                      string lpUsername, System.UInt32 dwFlags);

        [StructLayout(LayoutKind.Sequential)]
        private class NETRESOURCE
        {
            public ResourceScope dwScope = 0;
            public ResourceType dwType = 0;
            public ResourceDisplayType dwDisplayType = 0;
            public ResourceUsage dwUsage = 0;
            public string lpLocalName = null;
            public string lpRemoteName = null;
            public string lpComment = null;
            public string lpProvider = null;
        };

        public enum ResourceScope
        {
            RESOURCE_CONNECTED = 1,
            RESOURCE_GLOBALNET,
            RESOURCE_REMEMBERED,
            RESOURCE_RECENT,
            RESOURCE_CONTEXT
        };

        public enum ResourceType
        {
            RESOURCETYPE_ANY,
            RESOURCETYPE_DISK,
            RESOURCETYPE_PRINT,
            RESOURCETYPE_RESERVED
        };

        public enum ResourceUsage
        {
            RESOURCEUSAGE_CONNECTABLE = 0x00000001,
            RESOURCEUSAGE_CONTAINER = 0x00000002,
            RESOURCEUSAGE_NOLOCALDEVICE = 0x00000004,
            RESOURCEUSAGE_SIBLING = 0x00000008,
            RESOURCEUSAGE_ATTACHED = 0x00000010,
            RESOURCEUSAGE_ALL = (RESOURCEUSAGE_CONNECTABLE | RESOURCEUSAGE_CONTAINER | RESOURCEUSAGE_ATTACHED),
        };

        public enum ResourceDisplayType
        {
            RESOURCEDISPLAYTYPE_GENERIC,
            RESOURCEDISPLAYTYPE_DOMAIN,
            RESOURCEDISPLAYTYPE_SERVER,
            RESOURCEDISPLAYTYPE_SHARE,
            RESOURCEDISPLAYTYPE_FILE,
            RESOURCEDISPLAYTYPE_GROUP,
            RESOURCEDISPLAYTYPE_NETWORK,
            RESOURCEDISPLAYTYPE_ROOT,
            RESOURCEDISPLAYTYPE_SHAREADMIN,
            RESOURCEDISPLAYTYPE_DIRECTORY,
            RESOURCEDISPLAYTYPE_TREE,
            RESOURCEDISPLAYTYPE_NDSCONTAINER
        };

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top